Как сделать автосохранение в yii2?

Пользователь

от stephania , в категории: PHP , год назад

Как сделать автосохранение в yii2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от cooper.berge , год назад

@stephania 

Для создания автосохранения в Yii2 можно использовать механизм Ajax и функционал сохранения моделей ActiveRecord.


Следующий пример демонстрирует, как можно создать автосохранение для формы редактирования модели:

  1. Добавьте скрипт в представление, который будет отправлять данные формы на сервер при изменении её значения:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$(document).on('change', '#form-id input', function(){
    $.ajax({
        url: 'autosave',
        type: 'post',
        data: $('#form-id').serialize(),
        success: function(data) {
            console.log('Form saved');
        }
    });
});


  1. Создайте действие контроллера для сохранения данных:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public function actionAutosave()
{
    $model = new MyModel();

    if (Yii::$app->request->isPost) {
        $model->load(Yii::$app->request->post());
        $model->save(false); // сохраняем модель без валидации
        return 'Form saved';
    }

    return null;
}


  1. Убедитесь, что в вашей модели ActiveRecord указаны правила валидации:
1
2
3
4
5
6
7
public function rules()
{
    return [
        [['field1', 'field2', 'field3'], 'required'],
        [['field1', 'field2', 'field3'], 'string', 'max' => 255],
    ];
}


Таким образом, после изменения значения поля формы, данные будут отправляться на сервер, где модель будет сохраняться без валидации. Если введенные данные не соответствуют правилам валидации, то в следующем сохранении модель не будет сохраняться, а пользователю будет предложено исправить ошибки.