cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!

Почему не работает валидатор Yii2?

Модель: Setting
<?php

namespace app\modules\panel\models;

use app\models\User;
use Yii;
use yii\base\Model;

/**
 * Login the model behind the login form.
 */
class Setting extends Model
{
    public $login;
    public $name;
    public $vk;
    public $password;
    public $passwordTwo;

    public function rules()
    {
        return [
            [['login', 'name', 'vk'], 'string'],
            ['password', 'validatePassword'],
        ];
    }
    public function validatePassword($attribute, $params)
    {
        $this->addError($attribute, 'сразу ошибка без проверок');
    }
    
}

Экшен в контроллере:
public function actionSetting()
    {
        if (Yii::$app->request->isPost) {
            $model = new Setting();
            $model->load(Yii::$app->request->post());
            $model->updateUser();
        }
        $dbUser = User::findOne(Yii::$app->user->identity->id);
        $user = new Setting();
        $user->login = $dbUser->login;
        $user->name = $dbUser->name;
        $user->vk = $dbUser->vk;

        return $this->render('setting', compact('user'));
    }


Просто ради проверки поставил встроенный валидатор:
['passwordTwo', 'compare', 'compareAttribute' => 'password']

Он работает. А кастомный не работает... Он вообще ничего не выдает. Не зеленую ни красную обводку:
K_gxEejtsQo.jpg
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 1
@quitting
Junior php
Это $this->addError($attribute, 'сразу ошибка без проверок') сработает только в случае валидацыи формы на сервере. Для динамической валыдацыи ищи в доках инфу.
Ответ написан
Ваш ответ на вопрос

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

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