Страница 1 из 1
Подстановка из связанной таблицы в Active Form
Добавлено: 2018.08.11, 11:58
svil
Есть 2 таблицы статьи - blog(id,name, text) и комментарии к ним - comment(id, blog_id, name, text). Comment ссылается на blog по внешнему ключу blog_id. При обновлении в админке комментария как сделать подстановку вместо blog_id(comment) отображение name(blog по id)?
Форма генерируется как:
Код: Выделить всё
<?= $form->field($model, 'blog_id'->'')->textInput() ?>
Как дописать, чтобы сразу подставлялось name(blog) по blog_id(comment)=id(blog). Связи hasOne и hasMany сгенерированы gii в моделях Blog и Comment. Не нашла, как вывести подстановку.
Re: Подстановка из связанной таблицы в Active Form
Добавлено: 2018.08.11, 15:20
svil
Нашла подробное описание, как сделать:
https://sllite.ru/2014/10/yii2-%d1%81%d ... %b8%d1%80/
Итак в _form
Код: Выделить всё
<?= $form->field($model, 'blog_id')->dropDownList(
ArrayHelper::map($blog, 'id', 'name')
) ?>
create, update :
Код: Выделить всё
<?= $this->render('_form', [
'model' => $model, 'blog'=>$blog,
]) ?>
Контроллер CommentController:
Код: Выделить всё
public function actionView($id)
{
$blog= Blog::find()->all();
return $this->render('view', [
'model' => $this->findModel($id),
'blog' => $blog,
]);
}
public function actionCreate()
{
$model = new Comment();
$blog= Blog::find()->all();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}else {
return $this->render('create', [
'model' => $model,
'blog' => $blog,
]);
}
}
public function actionUpdate($id)
{
$model = $this->findModel($id);
$blog= Blog::find()->all();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('update', [
'model' => $model,
'blog' => $blog,
]);
}
Если 'blog' =>$blog не добавить везде, где можно, выскакивает ошибка, что $blog не определен.