2

私はYii2PHP フレームワークを使用しており、フォーム フィールドを生成するためにActiveField (Bootstrap バージョン) を利用しています。これは、ラッピング タグなどを含む$templateプロパティを利用しています。

テンプレートを使用せずにフォームに単一のフィールドを生成できるかどうか疑問に思っていますが、他のすべてのフィールドはそうです

私が現在行っている隠しフィールドを生成したいので、私は尋ねます:

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

これは正常に機能します、標準フィールド html 内にラップするためmargin-bottom、クラスに設定した I が.form-groupこれにも追加され、不要なマージンが発生しています。

このフィールドを自分で手動で挿入できることはわかっていますが、フィールドの正しいフォーム名 ( MyForm[some_id].

4

2 に答える 2

4

Kiran Muralee's answerによって提供された情報に基づいて、もう少し調査を行ったところ、ラッパー要素を完全に削除して、実際のinputフィールドを出力するだけでよいことがわかりました。

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

配列'tag' => false内の部分の追加に注意してください。options

注:>= 2.0.8これが正しく機能するには、Yii を使用している必要があります。それ以前に次のようなバグがあったためです。

拡張 #10764 : yii\helpers\Html::tag() および ::beginTag() は、$tag 属性が false または null の場合、HTML なしでコンテンツを返します (pana1990)

于 2016-10-02T11:21:45.677 に答える
1

これを試して

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

オプション プロパティは、フィールド コンテナー タグの HTML 属性 (名前と値のペア) を指定します。margin-bottomクラスに設定された値がform-group影響しなくなるため、これで問題が解決すると思います。

于 2016-10-01T18:08:44.770 に答える