villiwalla
@villiwalla
HTML-верстка

Почему не загружается модель после отправки данных?

На сайте есть форма, в которой несколько разных моделей.
Форма:
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
<?= $form->field($model, 'pagetitle')->textInput(['maxlength' => true]) ?>
<?= $form->field($collections, 'id')->dropDownList(\backend\models\Collections::find()
                        ->select(['name'])
                        ->indexBy('id')
                        ->column(), ['prompt'=>'Выберите коллекцию'])
                        ->label('Коллекция')
                        ->error(['text' => 'Это поле обязательное']) ?>
 <?= $form->field($image, 'images[]')->fileInput(['multiple' => true, 'accept' => 'image/*']) ?>
<?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
<?php ActiveForm::end(); ?>


В контроллере:
$collections->load(Yii::$app->request->post('Collections'));
var_dump(Yii::$app->request->post('Collections'));
/* 
../ProductsController.php:89:
array (size=1)
  'id' => string '2' (length=1)
*/

var_dump($collections->id);
/*
../ProductsController.php:91:null
*/


Правила для модели Collections:
public function rules()
    {
        return [
            [['id'], 'required'],
            [['id'], 'integer'],
            [['name'], 'string', 'max' => 75],
        ];
    }

Из формы для Collections отправляется только id, аналогичная ситуацию что другие модели не заполняется данных их формы, почему модель не заполняется?

P.S:
Контроллер сгенерированный gii имел такое условие и сохронял в БД данные:
if($model->load(Yii:$app->request->post()) && $model->save())
{
  // Если убрать save(), и вызвать $model->pagetitle то null
  return $this->redirect(['view',  'id' => $model->id]);
}
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Arik
А если просто?
$collections->load(Yii::$app->request->post());

По умолчанию каждая форма в своем массиве и load собирает свои поля, т.е. поля которые относятся к текущей модели формы. И вы делаете $collections->id, хотя это массив и надо collections['id']
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы