@rebekah
В Yii2 вы можете провалидировать несколько полей одновременно, используя метод validate()
модели.
Вы можете вызвать метод validate()
в контроллере перед сохранением модели, чтобы убедиться, что все необходимые поля заполнены правильно.
Например, если у вас есть модель User
с полями username
, email
и password
, то вы можете провалидировать все эти поля следующим образом:
1 2 3 4 5 6 7 8 9 10 11 |
$model = new User(); if ($model->load(Yii::$app->request->post()) && $model->validate()) { // Все поля прошли валидацию // Действия после успешной валидации } else { // Отобразить форму с ошибками валидации return $this->render('create', [ 'model' => $model, ]); } |
Если одно из полей не прошло валидацию, то вы можете получить список ошибок, используя метод getErrors()
модели. Например:
1
|
$errors = $model->getErrors(); |
Вы можете использовать метод addError($attribute, $error)
для добавления ошибки к конкретному атрибуту модели. Например:
1
|
$model->addError('username', 'Username already taken'); |
Также, вы можете использовать встроенные валидаторы Yii2 или создать свои собственные валидаторы для проверки полей модели.
@rebekah
Для создания собственного валидатора в Yii2, вы можете добавить метод в модель, который будет выполнять проверку поля и добавлять ошибки, если валидация не прошла.
Например, если вы хотите создать валидатор для проверки уникальности значения поля username, вы можете добавить следующий метод в модель User:
1 2 3 4 5 6 7
public function validateUsername($attribute, $params) { if (User::find()->where(['username' => $this->$attribute])->exists()) { $this->addError($attribute, 'Username already taken'); } }
Затем, в правилах валидации модели, вам нужно добавить это правило для поля username:
1 2 3
public function rules() { return [ [['username', 'email', 'password'], 'required'], [['username'], 'validateUsername'], ]; }
Теперь при вызове метода validate() у объекта модели User, валидатор validateUsername будет выполняться для поля username.
Вы также можете использовать встроенные валидаторы Yii2, такие как: required, email, compare и т.д. Более подробную информацию о встроенных валидаторах и их использовании, вы можете найти в официальной документации Yii2.