@Red_Fox_My

Yii2 как с помощью ActiveForm не создавать новый элемент, а обновить?

Yii2 как с помощью ActiveForm не создавать новый элемент, а обновить?

Форма:
<?
    $form = ActiveForm::begin($config); 
?>
    <?= $form->field($model, 'save_images_post')->checkbox() ?>
    <?= $form->field($model, 'folder_save_images_post')->textInput()?>
    <?= $form->field($model, 'save_backups')->checkbox() ?>
    <?= $form->field($model, 'folder_save_backups')->textInput()?>
    <?= $form->field($model, 'path_backups')->textInput()?>
    <?= $form->field($model, 'token_yandex_disk')->textInput()?>
    <?= $form->field($model, 'id_yandex_disk')->textInput()?>
    <?= $form->field($model, 'password_yandex_disk')->textInput()?>
    <?= $form->field($model, 'access_to_more_yandex_disk_link')->checkbox() ?>
    <div class="form-group">
        <div class="col-sm-offset-3 col-sm-9">
            <?= Html::submitButton(Yii::t('app', $status), 'btn btn-success') ?>
        </div>
    </div>
<?php ActiveForm::end(); ?>

У меня обновление идет в зависимости есть ли элемент или нет. Если есть то обновляется. Это все происходит на странице index.

Вот контроллер -

class DefaultController extends Controller
{
    /**
     * Renders the index view for the module
     * @return string
     */
    public function actionIndex()
    {
    	$model = new ApiYandexDiskSettings;

    	$status = 'update';

    	if($model->load(Yii::$app->request->post()) && $model->validate()){
    		$model->save(false);
	    }
	    $firstEl = ApiYandexDiskSettings::find()->one();
	    var_dump($firstEl);
	    if (empty($firstEl)) {
	        $status = 'create';
	    } else {
	        $status = 'update';
	    }
	        return $this->render('index', array('status' => $status, 'model' => $firstEl));

    }
}

Пробую обновить с помощью update() но он возвращает false

if(Yii::$app->request->get('status','update')){
    		$model->update();
    	}else{
    		$model->save(false);
    	}
  • Вопрос задан
  • 502 просмотра
Пригласить эксперта
Ответы на вопрос 1
Lumore
@Lumore
Front-end developer
В контроллере принимай как апдейт:
public function actionUpdate($id)
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['/model/index']);
        } else {
            return $this->render('update', [
                'model' => $model,
            ]);
        }
    }
}
Ответ написан
Ваш ответ на вопрос

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

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