不使用 Yii2 中的模板,用 ActiveField 生成单个表单域

Generate a single form field with ActiveField without using the template in Yii2

我正在使用 Yii2 PHP 框架并利用 ActiveField (Bootstrap Version) to generate form fields, this makes use of the $template 属性,其中包括包装标签等。

我想知道是否可以在不使用模板 的情况下以 形式生成单个字段,而所有其他字段 都可以

我问是因为我希望它生成一个隐藏字段,我目前正在这样做,例如:

<?= $form->field($model, 'some_id')->hiddenInput(['value' => $some_id])->label(false); ?>

这很好用,但是因为它将它包装在标准字段 html 中,我在 class 上设置的 margin-bottom .form-group 也被添加到此并导致不需要的边距。

我知道我可以自己手动插入这个字段,但是它不会获得该字段的正确表单名称,例如 MyForm[some_id].

试试这个

 <?= $form->field($model, 'some_id',
            ['template' => '{input}{error}',
             'options' => ['class' => 'your-class']]) ->
            hiddenInput(["value" => $someVal,
                         "class" => "your-class"
                ]) ?>

选项 属性 指定字段容器的 HTML 属性(名称-值对) tag.I 认为这会解决您的问题,因为 margin-bottom value put在 class form-group 上不再有影响。

根据 Kiran Muralee 的 提供的信息,我做了更多调查,发现您可以 完全 删除包装元素,只输出实际的 input字段,这就是我想要的。

<?= $form->field($model, 'some_id', ['template' => '{input}',
'options' => ['tag' => false]])->hiddenInput(['value' => $some_id])->label(false); ?>

注意在 options 数组 中添加了 'tag' => false 部分。

注意: 您必须使用 Yii >= 2.0.8 才能正常工作,因为在此之前有一个错误,说明为:

Enh #10764: yii\helpers\Html::tag() and ::beginTag() return content without any HTML when the $tag attribute is false or null (pana1990)