В фреймворке Yii можно создавать правила верификации формы или модели для разных экшенов контроллера с помощью метода rules()
в классе модели.
Для начала, вам понадобится создать модель, которая будет представлять вашу форму или данные, с которыми вы работаете. Для этого вы можете создать новый класс, наследующийся от yiibaseModel
или использовать уже существующую модель.
После создания или выбора соответствующей модели, вам нужно переопределить метод rules()
. В этом методе вы определите правила верификации для каждого экшена контроллера.
Пример метода rules()
может выглядеть следующим образом:
public function rules() { return [ [['field1', 'field2'], 'required', 'on' => 'create'], [['field1', 'field2'], 'string', 'length' => [3, 50], 'on' => 'create'], [['field3'], 'email', 'on' => 'update'], ]; }
В этом примере, есть три правила верификации. Первое правило гласит, что поля field1
и field2
являются обязательными для заполнения, и оно применяется только при выполнении экшена create
. Второе правило проверяет, что field1
и field2
являются строками и имеют длину от 3 до 50 символов, и оно также применяется только при выполнении экшена create
. Третье правило проверяет, что поле field3
является правильным email-адресом, и оно применяется только при выполнении экшена update
.
В вашем контроллере, где происходит обработка формы или данных, вы должны использовать эту модель и вызывать метод validate()
перед сохранением данных. Метод validate()
автоматически проверяет соответствие данных модели установленным правилам верификации.
Пример использования данной модели в контроллере:
public function actionCreate() { $model = new YourFormModel(); if ($model->load(Yii::$app->request->post()) && $model->validate()) { // Валидация прошла успешно $model->save(); // Сохранение данных return $this->redirect(['view', 'id' => $model->id]); } else { // Вывод формы с ошибками или другая логика return $this->render('create', [ 'model' => $model, ]); } }
В данном примере, новый экземпляр модели YourFormModel
создается для обработки данных. Если данные успешно загружены из запроса (load()
) и прошли валидацию (validate()
), то они сохраняются и происходит перенаправление к просмотру сохраненных данных. В противном случае, выводится форма с ошибками.
Таким образом, вы можете создавать правила верификации формы или модели для разных экшенов контроллера, чтобы точно определить, какие данные должны быть верифицированы при выполнении каждого конкретного действия.