Привет!
При заполнении формы, то происходит проверка введенных данных в поля формы согласно правилам метода rules().
Часть данных проверяется на стороне клиента, другая на стороне сервера, т.е. требуется перезагрузка страницы.
Если необходимо записать данные в БД при выполнении метода save() данные подвергаются еще раз валидации.
Первый вопрос, а как можно реализовать, чтобы валидация и запись в БД осуществлялась без перезагрузки страницы?
Второй вопрос связан с плагином Pjax, есть форма состоящая из одного поля input и никаких кнопок, пользователь вводит данные и после того, как он ввел 3 символа и более под формой выводятся результаты поиска из базы данных по этим полем, я не нашел такой метод в этом плагине.
Валидация, ActiveRecord и Pjax
Re: Валидация, ActiveRecord и Pjax
Могу предложить следующий вариант с ajx-валидацией: viewtopic.php?f=19&t=43467&p=216998#p216998Kutkh писал(а): ↑2017.05.22, 09:52 Привет!
При заполнении формы, то происходит проверка введенных данных в поля формы согласно правилам метода rules().
Часть данных проверяется на стороне клиента, другая на стороне сервера, т.е. требуется перезагрузка страницы.
Если необходимо записать данные в БД при выполнении метода save() данные подвергаются еще раз валидации.
Первый вопрос, а как можно реализовать, чтобы валидация и запись в БД осуществлялась без перезагрузки страницы?
Можно воспользоваться готовым решением - плагином select2 от картика, пример: http://demos.krajee.com/widget-details/ ... usage-ajaxKutkh писал(а): ↑2017.05.22, 09:52 Второй вопрос связан с плагином Pjax, есть форма состоящая из одного поля input и никаких кнопок, пользователь вводит данные и после того, как он ввел 3 символа и более под формой выводятся результаты поиска из базы данных по этим полем, я не нашел такой метод в этом плагине.
Re: Валидация, ActiveRecord и Pjax
Есть. Называется AJAX. Отправляйте форму сами через AJAX. Я использую это: https://jquery-form.github.io/form/, можно использовать, кстати, и pjax.Kutkh писал(а): ↑2017.05.22, 09:52 Привет!
При заполнении формы, то происходит проверка введенных данных в поля формы согласно правилам метода rules().
Часть данных проверяется на стороне клиента, другая на стороне сервера, т.е. требуется перезагрузка страницы.
Если необходимо записать данные в БД при выполнении метода save() данные подвергаются еще раз валидации.
Первый вопрос, а как можно реализовать, чтобы валидация и запись в БД осуществлялась без перезагрузки страницы?
Потому что этого функционала у плагина нету. Надо спрограммировать самому.Kutkh писал(а): ↑2017.05.22, 09:52 Второй вопрос связан с плагином Pjax, есть форма состоящая из одного поля input и никаких кнопок, пользователь вводит данные и после того, как он ввел 3 символа и более под формой выводятся результаты поиска из базы данных по этим полем, я не нашел такой метод в этом плагине.
Re: Валидация, ActiveRecord и Pjax
тогда по порядку, первый вопрос:
view:
controller:
панель отладки выдает 500 ошибку
view:
Код: Выделить всё
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($payment, 'auto'); ?>
<?= $form->field($payment, 'check', ['enableAjaxValidation' => true]); ?> // тут нужна ajax вализация
<?= Html::submitInput('Оплатить', ['id' => 'submit-payment', 'name' => 'submit-payment']) ?>
<?= $checkpayment; ?> // тут выводится блок данных, нужна ajax обновление при корректном заполнении формы и записи данных в БД
<?php ActiveForm::end(); ?>
Код: Выделить всё
use yii\widgets\ActiveForm;
use yii\web\Response;
$model = new Model();
$checkpayment = $model::checkPaymen();
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post()))
{
if ($model->addCheck($model))
{
// необходимо очистить поля формы, не перегружая страницу
return $model;
}
else
{
return ActiveForm::validate($model);
}
}
панель отладки выдает 500 ошибку
Re: Валидация, ActiveRecord и Pjax
1) Покажите action целиком
2) Объясните словами, как по вашему это должно работать?
3) И вот это никак не смущает $model->addCheck($model)?
2) Объясните словами, как по вашему это должно работать?
3) И вот это никак не смущает $model->addCheck($model)?
Re: Валидация, ActiveRecord и Pjax
вроде бы разобрался, получилось вот так:
но тут вылезло 2 проблемы:
1. если данные заполнены валидным кодом и шелкаешь по любому месту в окне и данные записываются, как сделать, чтобы только при нажатии кнопки
2. $this->refresh() но очищает данные с перезагрузкой страницы, а как без?
Код: Выделить всё
$model = new Model();
$checkpayment = $model::checkPaymen();
if (Yii::$app->request->isAjax && $model ->load(Yii::$app->request->post()))
{
Yii::$app->response->format = Response::FORMAT_JSON;
if ($model ->validate())
{
$model ->addCheck($payment);
$this->refresh();
} else
{
return ActiveForm::validate($model);
}
}
1. если данные заполнены валидным кодом и шелкаешь по любому месту в окне и данные записываются, как сделать, чтобы только при нажатии кнопки
2. $this->refresh() но очищает данные с перезагрузкой страницы, а как без?