looserrick
@looserrick
Неудачник

Почему не срабатывает loadMultiple для модели?

Я новичок в Yii2 (в PHP, в общем-то, тоже), пытаюсь копипастом отсюда изменить фиксированный набор записей.
Есть таблица skills_checked (там только одно поле 'value', которое надо изменить), для которой сгенерировал с помощью Gii модель. Затем сделал вот такой экшн в контроллере:
public function actionUpdate($id)
    {
        $sk_ch = SkillsChecked::find()->indexBy('id')->where(['students_id' => $id]);

        if (SkillsChecked::loadMultiple($sk_ch, Yii::$app->request->post(), '') && SkillsChecked::validateMultiple($settings)) {
            foreach ($sk_ch as $sk) {
                $sk->save(false);
            }
            return $this->redirect('index');
        }
        $dataProvider = new ActiveDataProvider([
            'query' => $sk_ch,
        ]);
        return $this->render('update', ['models' => $dataProvider, 'id' => $id]);
    }


Вот так выглядит view:
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\bootstrap\Button; ?>

<?php $form = ActiveForm::begin([
    'id' => 'update',
    'options' => ['class' => 'form-horizontal'],
]); ?>

<?php
foreach ($models->getModels() as $index=>$model) {
    echo $form->field($model, "[$index]value")->label($model->skills_id);
} ?>

 <div class="form-group">
        <div class="col-lg-offset-1 col-lg-11">
            <?= Html::submitButton('Сохранить', ['class' => 'btn btn-primary']) ?>
        </div>
    </div>


<?php ActiveForm::end();
?>


Как видите, практически копипаста. Однако, метод "SkillsChecked::loadMultiple" вообще не возвращает никаких значений. Вероятно, я где-то что-то сделал не так, да?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Замените
SkillsChecked::loadMultiple($sk_ch, Yii::$app->request->post(), '')

на
Model::loadMultiple($sk_ch, Yii::$app->request->post())

И ещё, у Вас нет никаких $settings)))
Замените
SkillsChecked::validateMultiple($settings))
на
Model::validateMultiple($sk_ch))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы