t-alexashka
@t-alexashka
░▒▓█▓▒░

Почему не срабатывает when в rule?

Привет друзья.

Есть правило в форме настроек:
['value', 'integer', 'min' => '1', 'max' => '9', 'when' => function($m) { return $m->param == 'sku_max'; }],

т.е. дословно - если параметр называется sku_max то он только число 1..9. Но почему то это правило срабатывает для любого названия параметра. Из за чего не срабатывает when?
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
t-alexashka
@t-alexashka Автор вопроса
░▒▓█▓▒░
оказывается все работало как надо на стороне пхп. а вот клиентская валидация игнорирует when, отсюда и не пускало дальше. решение - выключить клиентскую валидацию:
'enableClientValidation' => false,
в параметрах формы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
qonand
@qonand
Software Engineer
проблема не в правиле, если у Вас отрабатывает это правило значит действительно $m->param == 'sku_max' возвращает true. Тут нужно дебажить код, возможно у Вас по умолчанию param имеет значение 'sku_max', и Вы например не загружаете в модель новое название параметра
Ответ написан
OKyJIucT
@OKyJIucT
Sunshine reggae
Вместо "value" надо указывать название вашего параметра "param", ведь его вы проверяете на равенство значению 'sku_max'

['param', 'integer', 'min' => '1', 'max' => '9', 'when' => function($m) {
    return $m->param == 'sku_max'; 
}],


А вообще это можно сделать проще
['param', 'in', 'range' => range(1, 9)],
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Max.Credit Санкт-Петербург
от 150 000 до 150 000 руб.
Willz Москва
от 150 000 руб.
Fmedia Санкт-Петербург
от 40 000 до 100 000 руб.
15 авг. 2018, в 18:50
750 руб./в час
15 авг. 2018, в 18:48
45000 руб./за проект
15 авг. 2018, в 18:14
800 руб./за проект