@cooper.berge
Для настройки валидации на Yii2 необходимо выполнить следующие шаги:
1 2 3 4 5 6 7 8 |
public function rules() { return [ [['username', 'email'], 'required'], ['email', 'email'], ['username', 'unique'], ]; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$form = ActiveForm::begin([ 'id' => 'register-form', 'options' => ['class' => 'form-horizontal'], 'fieldConfig' => [ 'template' => "{label} {input} {error}", 'labelOptions' => ['class' => 'col-lg-2 control-label'], ], ]); echo $form->field($model, 'username'); echo $form->field($model, 'email'); echo Html::submitButton('Register', ['class' => 'btn btn-primary']); ActiveForm::end(); |
1 2 3 4 5 |
$model = new User(); if ($model->load(Yii::$app->request->post()) && $model->validate()) { // do something with the data $model->save(); } |
Если данные проходят валидацию, то сохраняется новый пользователь. Если нет, то выводятся ошибки валидации на форме.
@cooper.berge
Также возможно использовать правила валидации для конкретного сценария. Например, если у вас есть разные сценарии для одной модели (например, сценарий "create" для создания записи и сценарий "update" для обновления записи), вы можете указать отдельные правила валидации для каждого из них.
Пример использования сценариев:
1 2 3 4 5 6 7 8 |
public function rules() { return [ [['username', 'email'], 'required', 'on' => ['create', 'update']], ['email', 'email', 'on' => ['create', 'update']], ['username', 'unique', 'on' => 'create'], ]; } |
В этом примере указаны правила валидации для сценариев "create" и "update".
Также можно настроить сообщения об ошибках для каждого атрибута. Например:
1 2 3 4 5 6 7 8 |
public function rules() { return [ [['username', 'email'], 'required', 'message' => '{attribute} is required'], ['email', 'email', 'message' => 'Invalid email format'], ['username', 'unique', 'message' => 'Username already exists'], ]; } |
Это позволит настраивать вывод сообщений об ошибках для конкретных атрибутов.
Надеюсь, эта информация будет вам полезна для настройки валидации на Yii2. Если у вас возникнут дополнительные вопросы, не стесняйтесь их задать.