Витебск 01
Решил добавлять в массив правило, если зарегистрирован.
👻
ну как вариант if (isGusst) $model = Guest else $model User и 2 класса с разными валидаторами
👻
1 может наследовать другой с переопределением валидатора
👻
но как по мне сценарии более правильно
Yura
сценарии +
Yura
я могу пример кинуть, но не я писал это
who are you
не пргграммирование а театр ) сценарии сплошные 😂
👻
class User extends \app\modules\user\models\User { const SCENARIO_ADMIN_CREATE = 'adminCreate'; const SCENARIO_ADMIN_UPDATE = 'adminUpdate'; public $newPassword; public $newPasswordRepeat; /** * @inheritdoc */ public function rules() { return ArrayHelper::merge(parent::rules(), [ [['newPassword', 'newPasswordRepeat'], 'required', 'on' => self::SCENARIO_ADMIN_CREATE], ['newPassword', 'string', 'min' => 6], ['newPasswordRepeat', 'compare', 'compareAttribute' => 'newPassword'], ]); } public function scenarios() { $scenarios = parent::scenarios(); $scenarios[self::SCENARIO_ADMIN_CREATE] = ['username', 'email', 'status', 'role', 'newPassword', 'newPasswordRepeat']; $scenarios[self::SCENARIO_ADMIN_UPDATE] = ['username', 'email', 'status', 'role', 'newPassword', 'newPasswordRepeat']; return $scenarios; }
👻
в контроллере так public function actionCreate() { $model = new User(); $model->scenario = User::SCENARIO_ADMIN_CREATE;
Yura
Ну да чето тип
Yura
who are you
а сценарии эти только для правил валидации пашут ?
who are you
типа указал в правиле 'on' => self::SCENARIO_REGISTER
who are you
и на этом весь сценарий окончен
👻
по сути да для валидации
who are you
не понятно еще момент
who are you
http://shot.hsdn.org/7yqTijCb
who are you
нафига тут тогда перечислять поля
👻
обрати внимание вверху стоит арреей
👻
он объединяет поля
who are you
нафига там если вот http://shot.hsdn.org/slBXyhZu
who are you
тавталогия ?
👻
return ArrayHelper::merge(parent::rules(), [
who are you
нее, ты не понял вопрос
who are you
вот два скрина я дал, и на первом и на втором указываются поля участвующие в сценарии
who are you
для чего их два раза нужно и там и там указывать
who are you
или нужно один раз
👻
а
who are you
кажись дошло до меня
👻
как вариант можешь сделать так [['user',pass],'required'] [['email'],'required', on=>self::scenario_some]
👻
первое будет выполняться всегда второе только в случае некого сценария
who are you
[['username', 'email', 'password'], 'required', 'on' => self::SCENARIO_REGISTER], здесь self::SCENARIO_REGISTER указывает имя сценария, но не указывает какие поля будут работать в этом сценарии
Karim
но как по мне сценарии более правильно
а если просто when использовать?
👻
про when не в курсе
who are you
согласен да
who are you
сценарии надо юзать
who are you
если одна модель используется в разных целях
Karim
http://www.yiiframework.com/doc-2.0/guide-input-validation.html#conditional-validation
👻
ну как я понял when не много не то
👻
суть задачи в зависимости от типа прав валидировать 2 или 3 поля а when больше подходит если поле валидно то что то потом сделать
who are you
when юзать надо когда проверка одного атрибута зависит от значения другого атрибута
👻
['state', 'required', 'when' => function($model) { return $model->country == 'USA'; }],
👻
:)
who are you
у Yii2 есть какая нибудь либа для работы с nodejs
Витебск 01
Как в валидации можно реализовать такое, что-то я пропустил... например если поле x1 == 'yes', поле x2 required?
Витебск 01
when=>
Витебск 01
Вот такая проблема, не обрабатывает валидацию:
Витебск 01
['name', 'required', 'when' => function($model) { if ($model->email == "test") $this->addError('name', "тест"); }],
Витебск 01
Данные из модели не передаются
Витебск 01
Только параметр 'name' передается
The Ant
параметр name тоже не передается. Ты ж его не передаешь нигде, а просто указал =)
The Ant
и? каким это боком к name относится? Более того, внутри функции ты используешь $this
The Ant
что это за $this? они нигде не определен там
Витебск 01
The Ant
если нужен $this то передавать в функцию его явно
The Ant
function($model) use ($this) {
The Ant
но я бы возвращал просто булев тип
The Ant
['name', 'required', 'when' => function($model) { return ($model->email == "test") ? false : true; }],
Витебск 01
Проблема в том, что остальные значение в моделе пустые.
Витебск 01
Я делал die($model).
Витебск 01
Там объявлено только само значение, в данном случае name
The Ant
а кроме name задавал что-нибудт? )
The Ant
имею в виду в форме
Витебск 01
а кроме name задавал что-нибудт? )
Конечно, все, что пытаюсь вызвать.
The Ant
занятно... ну хз тогда )
The Ant
попробуй все таки вернуть булев тип
The Ant
http://www.yiiframework.com/doc-2.0/yii-validators-validator.html#$when-detail
The Ant
The callable should return a boolean value.
Витебск 01
Ласт тупой вопрос. Мне нужен required, только, когда значение ячейки $test == "1", как такое правило можно задать?
Витебск 01
Если $test == 2, required просто не должен срабатывать.
Витебск 01
Функция не обрабатывает, если входные данные пустые
Olzhas
Смотри параметр when в правилах валидации
The Ant
какой нахуй рекуред в классах ))
Алимжан
Посоны, кто знает как работают кэшбэк системы типа letyshops.ru
Алимжан
Откуда они получают информацию о моих покупках в магазинах?
Алимжан
Сорри что не по уии, можете в лс написать если что