Не работает своя валидация в модуле, что не так?

Начал изучать yii2 и столкнулся с такой проблемой. Создал отдельный модуль для user сделал форму регистрации, написал для правила для полей и написал одно правило свое для email и оно не срабатывает хоть убей, хотя если скопировать его и вставить в стандартную папку models которая на самом верху то там все работает, попробовал использовать сценарии результат такой же. Помогите решить задачу а то у меня уже кони берут.

<?php
/**
 * Created by PhpStorm.
 * User: lagoy
 * Date: 22.03.2017
 * Time: 10:22
 */

namespace app\modules\user\models;

use yii\base\Model;

class UserRegForm extends Model
{
    public $email;
    public $password;
    public $password_repeat;

    public function rules()
    {
        return [
            [['email','password', 'password_repeat'],'required'],
            [['email'], 'email'],
            ['password','string','min'=>6,'max'=>20],
            ['password_repeat','string','min'=>6,'max'=>20],
            ['email', 'vlemail', 'on' => 'reg']
        ];
    }

    public function vlemail($attribute,$params)
    {
        if(!$this->hasErrors()) // если нет ошибок в валидации
        {
            if($this->email != 'test@mail.ru'){
                $this->addError($attribute,'Мое правило сработало');
            }
        }
    }

}


Вот контроллер
<?php
/**
 * Created by PhpStorm.
 * User: lagoy
 * Date: 22.03.2017
 * Time: 10:32
 */

namespace app\modules\user\controllers;

use app\modules\user\models\user;
use app\modules\user\models\UserRegForm;
use Yii;

class UserController extends UserAppController
{
    public function actionRegister(){
        $model = new UserRegForm();
        $model->scenario = 'reg';
        return $this->render('register', compact('model'));
    }
}
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
qonand
@qonand
Software Engineer
эм а почему оно должно срабатывать? Вы нигде не валидируете модель... или Вы имеет ввиду что оно должно срабатывать при клиентской валидации? Если да тогда Вам стоит реализовать свой класс валидатора и реализовать в нем механизм проверки данных на стороне клиента
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы