Модальный атрибут yii2 по требованию динамически

У меня есть случай, когда поле является обязательным, но не всегда обязательным. Если я напишу атрибут как требуется в модальном rules(), например: [['my_attribute'], 'required'], тогда это сделает поле обязательным в каждом случае.

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

P.S: я хочу избегать jQuery и JavaScript. Пожалуйста, ответьте, есть ли способ сделать это в Yii2 :) спасибо.


person Danish Ahmed    schedule 08.04.2016    source источник
comment
покажи что пробовал? Непонятно, что вы спрашиваете.   -  person Insane Skull    schedule 08.04.2016
comment
я уже написал свой подход выше - правило () требовало одного и одного через jQuery. Знаете ли вы какой-нибудь правильный способ сделать это по стандартам yii2?   -  person Danish Ahmed    schedule 08.04.2016
comment
Вы можете использовать сценарий.   -  person Insane Skull    schedule 08.04.2016
comment
хорошо, готово :) я переопределил функцию rules(). На самом деле я не хотел делать это с помощью сценариев, потому что рабочий процесс в обоих моих случаях одинаков, за исключением одного атрибута. Поэтому я избегал избыточности. В любом случае спасибо :) не могли бы вы подсказать мне, как закрыть вопрос? я новичок в этом.   -  person Danish Ahmed    schedule 08.04.2016
comment
может быть, вы можете удалить или определенно проголосовать за закрытие.   -  person Insane Skull    schedule 08.04.2016


Ответы (1)


Вы можете использовать when из здесь Итак, это будет выглядеть так: тот:

public function rules()
{
    return [
        ['password', 'required', 'when' => function($model) {
            return $model->role === 'user'; // boolean should be returned
        }]
    ];
}

Он будет проверять атрибут на условие required только тогда, когда роль $model равна user.

person aderushev    schedule 08.04.2016