При регистрации на сайте, проверка имени пользователя проводится на стороне сервера, т.к только сервер имеет информацию о пользователях. Рассмотрим пример AJAX валидации формы. Опишем модель.
namespace app\models; use Yii; use yii\base\Model; class RegistrationForm extends Model { public $username; // имя пользователя public $password; // пароль public $email; // электронный адрес public function rules() { return [ [ ['username' ,'password', 'email'], 'required'], // поля обязательные для заполнения ['email', 'email'], // поле email должно быть электронным адресом ]; } }
Добавим функцию actionRegistration() в контроллер
public function actionRegistration() { $model = new RegistrationForm(); if (Yii::$app->request->isAjax && $model->load(Yii::$app->request>post())) { // если получаем AJAX и POST запрос Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($model); // выполняем валидацию формы } return $this->render('registration', ['model' => $model]); // передаем модель в представление }
Добавляем форму в представление
use yii\bootstrap\ActiveForm; use yii\bootstrap\Html; $form = ActiveForm::begin(['id' => 'registration-form']); // виджет формы echo $form->field($model, 'username'); // имя пользователя echo $form->field($model, 'password')->passwordInput(); // пароль echo $form->field($model, 'email')->input('email'); // электронный адрес echo Html::submitButton('Зарегистрироваться', ['class' => 'btn btn-primary', 'name' => 'registration-button']); // кнопка регистрации ActiveForm::end(); // закрываем форму