Posts Issued on November 15, 2022

posted by sakurai on November 15, 2022 #551

editアクションのビューの修正

続いて鉛筆マークのクリックで表示されるビューである_form.phpを修正します。これはcreateアクションのビューも兼用しています。まず標準の実行結果は図551.1のとおりです。

図%%.1
図551.1 yii2標準のActiveFormによる表示

同じく_form.phpを修正します。自動生成されたコードを見ると、

    <?= $form->field($model'category_id')->textInput() ?>

となっています。このcategory_idを、同様に(リレーション名).(メンバ名)としてみましたが、そう単純には行きませんでした。

単に表示を変えるのではなく、リストから選択する必要があるためです。そのためdropDownListウィジェットを用います。dropDownListが連想配列を必要とするので、categoryモデルが必要ですが、まず必要なモデルやヘルパーライブラリの使用を宣言します。

use yii\helpers\ArrayHelper;
use 
app\models\Category;

categoryモデルを全て配列に入れたあと、arrayHelperという便利な配列操作関数のうちのmap関数を用いて、dropDownListに必要な連想配列を作成します。

    <?= $form->field($model'category_id')->dropDownList(ArrayHelper::map(Category::find()->asArray()->all(), 'id''name')) ?>

これを実行した結果を図551.2に示します。

図%%.2
図551.2 修正したActiveFormによる表示

これでyii2のビューの修正は全て完了です。


左矢前のブログ 次のブログ右矢