我使用Yii2
PHP框架并利用ActiveField(引导版本)生成表单字段,这使用了$template属性,其中包含了包装标签和这样
我想知道是否可以使用形式生成单个字段而不使用使用模板,而所有其他字段执行。
我问,因为我希望它生成一个隐藏字段,我目前正在这样做:
<?= $form->field($model, 'some_id')->hiddenInput(['value' => $some_id])->label(false); ?>
这很好,然而因为它将它包装在标准字段html中,我在类margin-bottom
上设置的.form-group
也被添加到此处并导致不必要的保证金。
我知道我可以自己手动插入此字段,但之后无法获得该字段的正确表单名称,例如MyForm[some_id]
。
答案 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
上的值不会影响了。