2016-06-11 22 views
4

フォームフィールドをYii2に2 x 2グリッドで並べて配置したいと考えています。yii2フォームフィールドを並べてレイアウトする方法

私は、フィールドが、基本的

<?= $form->field($model, 'saleFrom')->widget(DatePicker::className(), [ 
    'options' => ['placeholder' => 'TO'], 
    'pluginOptions' => [ 
     'autoclose' => true, 
     'format' => 'yyyy-mm-dd' 
    ] 
]); ?> 

しかしやることに成功したものはすべてにすべての4つのフィールドを揃えるの日付ウィジェットのシリーズですな

<?php $form = ActiveForm::begin([ 
    'layout' => 'horizontal', 
    'action' => ['index'], 
    'method' => 'get', 
    'fieldConfig' => [ 
     'horizontalCssClasses' => [ 
      'label' => 'col-sm-2', 
      'offset' => 'col-sm-offset-2', 
      'wrapper' => 'col-sm-4', 
     ], 
    ], 
]); ?> 

としてブートストラップ/のActiveFormを使用していますdivの左側 - 私は手動でカスタムCSSを追加することなくこれを行うためにYii2オプションを使用する方法をドキュメントから理解できません。

答えて

5

好むビルドのレイアウトをブートストラップグリッドを使用することができます。

<?php $form = ActiveForm::begin([ 
    'layout' => 'horizontal', 
    'action' => ['index'], 
    'method' => 'get', 
    'fieldConfig' => [ 
     'horizontalCssClasses' => [ 
      'label' => 'col-sm-2', 
      'offset' => 'col-sm-offset-2', 
      'wrapper' => 'col-sm-4', 
     ], 
    ], 
]); ?> 
    <div class="row"> 
     <div class="col-md-6"> 
      <?= $form->field($model, 'firstname') ?> 
      <?= $form->field($model, 'lastname') ?> 
     </div> 
     <div class="col-md-6"> 
      <?= $form->field($model, 'email') ?> 
      <?= $form->field($model, 'bla') ?> 
     </div> 
    </div> 
<?php ActiveForm::end() ?> 
+0

yii2マークアップが独自のブートストラップを追加しているため、これは機能しません - なぜブートストラップのyii2の使用を理解する必要があるのですか? – yoyoma

+0

もちろんあなたはそれを試しましたか? Yiiは 'form-group'のマークアップだけ作成します。これらの内部グリッド列は、必要に応じてネストできます。私はこれを私のプロジェクトを通して常に行います。 –

+0

さて、私はそれを試して、それは文字通り何も変わった – yoyoma

0

あなたはあなたが必要なのは、別のブートストラップrowにフォーム列をラップすることです

<div class="site-index"> 
    <div class="body-content"> 
     <div class='col-sm-6 col-md-6' id='id'> 
     <?php 
       $form1 = ActiveForm::begin([ 
        'layout' => 'horizontal', 
        'action' => ['index1'], 
        'method' => 'get', 
        'fieldConfig' => [ 
         'horizontalCssClasses' => [ 
          'label' => 'col-sm-2', 
          'offset' => 'col-sm-offset-2', 
          'wrapper' => 'col-sm-4', 
         ], 
        ], 
       ]); 

       ... 
     ?> 

     </div> 
     <div class='col-sm-6 col-md-6' id='id2'> 

       $form2 = ActiveForm::begin([ 
        'layout' => 'horizontal', 
        'action' => ['index2'], 
        'method' => 'get', 
        'fieldConfig' => [ 
         'horizontalCssClasses' => [ 
          'label' => 'col-sm-2', 
          'offset' => 'col-sm-offset-2', 
          'wrapper' => 'col-sm-4', 
         ], 
        ], 
       ]); 

       ... 
     </div> 
    </div> 
</div>   
+0

私は2つのアクティブフォームを必要としません。私はグリッドに4つのフィールドが必要です。私はyiiがbootstrap divを設定するよりもむしろactiveformでそれをするオプションを持っていると思った? – yoyoma

+0

これには拡張機能がありますが、ブートストラップ付きの単純なグリッドはしばしば非常に便利だと思います – scaisEdge

関連する問題