@stephania
Для создания автосохранения в Yii2 можно использовать механизм Ajax и функционал сохранения моделей ActiveRecord.
Следующий пример демонстрирует, как можно создать автосохранение для формы редактирования модели:
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 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 2 3 4 5 6 7 |
public function rules() { return [ [['field1', 'field2', 'field3'], 'required'], [['field1', 'field2', 'field3'], 'string', 'max' => 255], ]; } |
Таким образом, после изменения значения поля формы, данные будут отправляться на сервер, где модель будет сохраняться без валидации. Если введенные данные не соответствуют правилам валидации, то в следующем сохранении модель не будет сохраняться, а пользователю будет предложено исправить ошибки.