今日はリモートワークでしたが、ちょっと集中しすぎて疲れました。体調が良いからといって、調子に乗ってはいけないな。
さて、Yii2でハマったところをメモしておきます。
ActiveFormのfield()はclassを指定しないと.form-groupのクラスが使用される
filed()でclassを明示的に指定しない場合、.form-group指定されます。.form-groupはmarginが付与されているので、意図しない配置になることがあります。.form-groupを使いたくなければ、optionsにclassを明示的に指定します。
<?= $form->field($model, 'name', ['options' => ['class' => 'col-md-3']])->textInput(['maxlength' => true])->label(FALSE)?>
もしくは、Html::activeInput()などの、Html::active*系は.form-groupを使用しません。
特にhidden inputはHtml::activeHiddenInput()を使うべし
上述のようにfield()はもれなく.form-groupが付いてくるので表示が乱れます。同様にclassを明示的に指定してもいいですが、表示しないものにclassを指定するも不自然なので、Html::activeHiddenInput()を使うべき。
<?= Html::activeHiddenInput($model, 'name'); ?>
Pjaxのビューの中ではjqueryは$(document)を指定する
Pjaxで読込みが行われた場合、$(document)が使用されていないと反応しなくなります。おそらくPjaxがjquery(JavaScript)をリロードするからでしょう。
$(document).on('click', '#id', function() { 処理 }
$(document)の方は解決まで結構時間がかかった。とりあえずそんなところ。