Model::loadMultiple
Добавлено: 2021.07.31, 11:52
Добрый день, помогите разобраться с Model::loadMultiple. Для практики пишу небольшое приложение и делаю раздел настроек в котором использует для сохрания настроек Active Form
Таблице в Бд по сути состоит из 4 полей id, code, key, value.
Попробовал сделать так
Представление для Market1 (в бд code = market1, key = apiKey, value = значение)
Представление для Market2 (в бд code = market2, key = login, key = password, value = значение)
По сути при таком подходе проблемы возникает две. Первая это если пустая таблица, тогда понятное дело не выводятся инпуты для заполнения и вторая, если один раз заполнить эти поля, то при повторной попытке сохранения формы данные почему то не меняются
Подскажите в чем может быть причина или возможно посоветуйте как правильно реализовать сохранения разнообразных настроек в одной таблице.
Таблице в Бд по сути состоит из 4 полей id, code, key, value.
Попробовал сделать так
Код: Выделить всё
public function actionMarket1()
{
$settings = Setting::find()->where(['code' => 'market1'])->all();
if (Model::loadMultiple($settings, Yii::$app->request->post()) && Model::validateMultiple($settings)) {
foreach ($settings as $setting) {
$setting->save();
Yii::$app->session->setFlash('success', "Данные успешно сохранены");
}
return $this->redirect('market1');
}
return $this->render('market1', ['settings' => $settings]);
}
public function actionMarket2()
{
$settings = Setting::find()->where(['code' => 'market2'])->all();
if (Model::loadMultiple($settings, Yii::$app->request->post()) && Model::validateMultiple($settings)) {
foreach ($settings as $setting) {
$setting->save();
Yii::$app->session->setFlash('success', "Данные успешно сохранены");
}
return $this->redirect('market2');
}
return $this->render('market2', ['settings' => $settings]);
}
Код: Выделить всё
<?php $form = ActiveForm::begin(); ?>
<?php
foreach ($settings as $index => $setting) {
switch ($setting['key']) {
case 'apiKey':
echo $form->field($setting, "[$index]value")->label('Ключ Api');
}
}
?>
<div class="form-group">
<?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
Код: Выделить всё
<?php $form = ActiveForm::begin(); ?>
<?php
foreach ($settings as $index => $setting) {
switch ($setting['key']) {
case 'login':
echo $form->field($setting, "[$index]value")->label('Логин');
break;
case 'password':
echo $form->field($setting, "[$index]value")->label('Пароль');
break;
}
}
?>
<div class="form-group">
<?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
Подскажите в чем может быть причина или возможно посоветуйте как правильно реализовать сохранения разнообразных настроек в одной таблице.