Yii2. Пример динамической модели.


Модели, помимо множества других моментов, невероятно удобно использовать для валидации данных. Но иногда не хочется городить много лишних файлов, тем самым засоряя проект. В таком случае удобно использовать динамические модели.

Следующий пример, позволяет создать такую модель, добавить в нее несколько правил валидации. после чего загрузить данные, как будто в привычную модель, провести валидацию и т.д.

Итак:

use \yii\base\DynamicModel ;
// .....
public function actionForm()
{
    $model = new DynamicModel(['name', 'email', 'address']);
    $model
        ->addRule(['name','email'], 'required')
        ->addRule(['email'], 'email')
        ->addRule('address', 'string',['max'=>32]);
 
    if( $model->load(Yii::$app->request->post()) && $model->validate() ){
        // проводим любые действия
        return $this->redirect(['view']);
    }
    return $this->render('form', ['model'=>$model]);
}

Код view, при этом, неизменен и никак не отличается от использования обычных, не динамических моделей.

, ,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *