完全なコントローラとフォームコードは、すでに複数の場所で指定されているため、過度です。多くの例がガイド([1]、[2])で利用可能で、プロジェクトテンプレート([3]、[4])でどのように処理されているかをいつでも見ることができます。
まず第一に、あなたは次のように表示し、コントローラから直接それらを渡すことができますので、$this->view->params
を使用して変数を渡す必要はありません。
public function actionCreate()
{
$customer_list = ArrayHelper::map(Customers::find()
->orderBy(['last_name' => SORT_ASC])
->all(), 'id', 'fullName');
return $this->render('create', [
// ...
'customer_list' => $customer_list
]);
}
今ビューcreate
で利用可能$customer_list
変数があります。 $this->view->params
を使用することも同様ですが、ビュー間で変数を渡すのではなく作成されます。ドロップダウン用として
<?= $form->field($model, 'customer_id')->dropDownList($customer_list, ['prompt' => '-Choose a Customer-']) ?>
:
ActiveField与えられたオプション項目の一つは、(それが'customer_id'
をだ、この場合には)$model
の属性の値と一致したときに選択した値を表示するように設計されてdropDownList()
方法ので、すべてのあなたにこの属性を設定する必要があります。
public function actionUpdate($id)
{
$model = Jobs::findOne($id); // $id is primary key in the DB table for Jobs model
// operations on $model here
$customer_list = ArrayHelper::map(Customers::find()
->orderBy(['last_name' => SORT_ASC])
->all(), 'id', 'fullName');
return $this->render('update', [
'model' => $model,
'customer_list' => $customer_list
]);
}
今ビューでdropDownList()
に同じコードが$model
で保存された値で選択'customer_id'
を示しています
Jobs
の場合は、ActiveRecordのアクションのインスタンスはそのような何かを見ることができますです。
Jobs
はあなたにもお好みの'customer_id'
を渡すことができ、フォームモデルのインスタンスである場合:今すぐビューショーでdropDownList()
のために同じコード
public function actionUpdate()
{
$model = new Jobs();
$model->customer_id = 1; // example
// operations on $model here
$customer_list = ArrayHelper::map(Customers::find()
->orderBy(['last_name' => SORT_ASC])
->all(), 'id', 'fullName');
return $this->render('update', [
'model' => $model,
'customer_list' => $customer_list
]);
}
'customer_id'
1の値を選択(場合その値の項目があります)。
まず、私が代わりに提供した方法を使用して、コントローラからビューに変数を渡すことができませんでした。これは$ this-> view-> params ['customer_list']メソッドを使って動作するため、大したことではありません。選択した項目を表示するために与えた例は$ model-> customer_id = 1です。しかし、私が望むのは、ジョブテーブルの現在のレコードから選択されたcustomer_idです。あなたは私にそれをする方法を教えてくれますか?ありがとう。 – user1556325
上記のコメントは無視してください。私はこれを考え出した。更新時のフォームには、選択した項目として表の値が自動的に表示されます。何もする必要はありません。 – user1556325