使用ActiveField生成单个表单字段,而不使用Yii2中的模板

时间:2016-10-01 13:40:24

标签: yii yii2 active-form

我使用Yii2 PHP框架并利用ActiveField(引导版本)生成表单字段,这使用了$template属性,其中包含了包装标签和这样

我想知道是否可以使用形式生成单个字段而不使用使用模板,而所有其他字段执行

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

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

这很好,然而因为它将它包装在标准字段html中,我在类margin-bottom上设置的.form-group也被添加到此处并导致不必要的保证金。

我知道我可以自己手动插入此字段,但之后无法获得该字段的正确表单名称,例如MyForm[some_id]

2 个答案:

答案 0 :(得分:2)

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

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

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

注意:您必须使用Yii >= 2.0.8才能正常使用,因为之前存在错误,声明为:

  

Enh#10764 :yii \ helpers \ Html :: tag()和:: beginTag()在$ tag属性为false或null时返回没有任何HTML的内容(pana1990)

答案 1 :(得分:1)

试试这个

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

options属性指定字段容器标记的HTML属性(名称 - 值对)。我认为这可以解决您的问题,因为margin-bottom类放在类form-group上的值不会影响了。