Как настроить валидацию на yii2?

Пользователь

от cooper.berge , в категории: PHP , 2 года назад

Как настроить валидацию на yii2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от adrien.waters , 2 года назад

@cooper.berge 

Для настройки валидации на Yii2 необходимо выполнить следующие шаги:

  1. Определить правила валидации для модели. Для этого нужно создать метод rules() в модели и указать в нем правила валидации. Например:
1
2
3
4
5
6
7
8
public function rules()
{
    return [
        [['username', 'email'], 'required'],
        ['email', 'email'],
        ['username', 'unique'],
    ];
}


  1. Создать форму на основе модели. Например:
 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. Обработать отправку формы и выполнить валидацию. Например:
1
2
3
4
5
$model = new User();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
    // do something with the data
    $model->save();
}


Если данные проходят валидацию, то сохраняется новый пользователь. Если нет, то выводятся ошибки валидации на форме.

Пользователь

от shayna.buckridge , 5 месяцев назад

@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. Если у вас возникнут дополнительные вопросы, не стесняйтесь их задать.