47歳でやむなくセミリタイア

病気のためセミリタイアをすることに。現在は週20時間程度のバイトをしています。その他、雑多なことを記録として書いています。

Yii2の使い方: Tips ActiveFormのfileldと、Pjax使用時のjquery

今日はリモートワークでしたが、ちょっと集中しすぎて疲れました。体調が良いからといって、調子に乗ってはいけないな。

さて、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)の方は解決まで結構時間がかかった。とりあえずそんなところ。