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