Yii2: кнопка «Сохранить черновик» - PullRequest
0 голосов
/ 27 августа 2018

Я хотел бы иметь форму с тремя кнопками:

  1. Кнопка ОК: запускает проверку и публикует данные об успехе.
  2. Кнопка "Отмена": пропустить проверку и публикацию и перенаправить в другое представление.
  3. Кнопка "Сохранить черновик": публикация данных без проверки.

Я знаю, как реализовать кнопки ОК и Отмена, но как предотвратить проверку при нажатии кнопки «Сохранить черновик»?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Надеюсь, это кому-нибудь поможет. Вот решение:

Добавьте «Черновую кнопку» как обычную кнопку в вашем представлении:

<?= Html::button('Save Draft', ['class' => 'btn btn-default btn-block', 'id' => 'save-draft-btn']) ?>

Добавьте JS-файл в ваше представление и укажите событие onClick для кнопки:

$('#save-draft-btn').on('click', function (e) {
    $.ajax({
       type: 'POST',
       url: draftUrl,
       data: $('#report-index').serialize()
    });      
});

Добавьте действие в свой контроллер:

public function actionSaveDraft($idSupply)
{
    //load models like this
    $report = \app\models\Reports::findOne($idSupply);

    //fill with the POST data
    $report->load(Yii::$app->request->post());
    //save without validation
    $report->save(false); 

    //inform the user on success saving
    Yii::$app->session->setFlash('success', 'Draft Saved');

    //redirect to the editing page
    return $this->redirect(['index', 'idSupply' => $report->id_supply]);

}
0 голосов
/ 28 августа 2018

Чтобы обойти проверку на стороне клиента только для черновой кнопки, я бы предложил не использовать кнопку отправки для черновика , использовать обычную кнопку и сохранить черновик с помощью вызова ajax, это будет запуск проверки, если вы печатаете в поле или размытие, но не если вы нажимаете кнопку черновик. используйте $.serialize() для получения входных данных формы и отправки вызова для сохранения в виде черновика.

...