
Mr.
22.02.2018
11:01:09
ну я смотрю по коду что там перебираются валидаторы
в rules, насколько я понимаю, каждый элемент массива - отдельный валидатор
если валидатор вернул false (атрибут не валиден), можно-ли на этом месте прервать валидацию?

Максим
22.02.2018
11:02:17
а смысл? пусть уже добьет до конца и не пропустит дальше действие в любом случае

Google

Mr.
22.02.2018
11:02:20
предположим что дальше по коду ещё, например, 10 проверок с обращением к БД, и я хотел-бы их избежать

Антон
22.02.2018
11:02:39
наверное, только наследовать ActiveRecord и реализовывать свой validate() с блэкджеком

Максим
22.02.2018
11:03:21
а что если использовать разные сценарии? сначала один, где валидируется только один параметр, если true - то другой зарядить, где будет проверяться все остальное

Mr.
22.02.2018
11:04:23
наверное во время валидации подмена сценария не даст никакого эфекта
ибо там в validate() идёт ->getActiveValidators(), в котором валидаторы выбираются по сценарию
мы ж будем продолжать валидировать по первому сценарию :)

Максим
22.02.2018
11:05:47

Mr.
22.02.2018
11:06:05
да проще чем такое разводить модельку унаследовать :D
я просто думал что уже реализовано, дабы не велосипедить

Nastya
22.02.2018
11:07:11

Mr.
22.02.2018
11:08:03
в доке по skipOnError немного другое пишут
правило не будет применяться если для этого поля уже существует ошибка
хотя

Google

Mr.
22.02.2018
11:08:21
хм
можно нагородить и так

Максим
22.02.2018
11:08:38
все же я думаю, что подмена сценария должна сработать)

Mr.
22.02.2018
11:09:10
можно просто все правила валидации под одно поле запилить, и skipOnError
но в идеале хотелось-бы получить вариант обрыва всех сценариев валидации на определённом месте

Максим
22.02.2018
11:10:12
1. Сделать сценарий с валидацией первого поля
2. Если нет ошибки - подменяем сценарий, в котором проверяем все остальное, и опять валидируем

Ad.x ??
22.02.2018
11:12:47

Максим
22.02.2018
11:13:07

Ad.x ??
22.02.2018
11:14:17
да и так нормльная логика. все ошибки сразу подсветит

Dmitry
22.02.2018
11:14:25
Вообще блин, чё за бред вы тут обсуждаете? Если нужно менять дефолтное поведение валидации модели, то нужно писать свою валидацию. А не строить замок из говна и палок.

Mr.
22.02.2018
11:15:32
да понятное дело что свою писать :) я ж спрашивал есть-ли что готовое

Dmitry
22.02.2018
11:15:45
И вообще, это получается схема самого ужасного интерфейса. Где форму заполнить можно с 40 раза пока все поля отдельно пошагово пройдешь с этими прерывистыми валидпторами

Mr.
22.02.2018
11:16:34
надо добавить в /yii/validators/Validator поле dieIfError, и одну дополнительную проверку в Model->validate(), и вопрос решён :)

?
22.02.2018
11:16:39
сделать вместо формы мастер
и на каждом этапе проверять в своей модели

Dmitry
22.02.2018
11:17:03

Ad.x ??
22.02.2018
11:17:29

Dmitry
22.02.2018
11:18:12
Делите форму на стейджи в конце концов

Mr.
22.02.2018
11:18:28
нет
валидация у меня происходит в API
моя задача - реализовать "на новый лад" одно старое API
данные в API идут как POST, + там есть поле data с xml'кой внутри
вот для этой xml'ки валидацию я и делаю

Dmitry
22.02.2018
11:18:48
Это же сколько раз нужно сабмитить форму, чтобы правильно заполнить поочередно 40 полей?

Google

Mr.
22.02.2018
11:18:52
если пользователь забанен, смысл проверять, были-ли от него ещё какие-то сущности?

Nastya
22.02.2018
11:19:13
Дмитрий, вы будто недавно налоговую декларацию онлайн заполняли. откуда столько страсти? :D

Dmitry
22.02.2018
11:19:17
Забанен ли пользователь у вас должен проверять аут менеджер или рбак

Mr.
22.02.2018
11:19:29
пользователь забанен, всё, баста
пиши в поддержку, спрашивай почему

Dmitry
22.02.2018
11:19:46
И давать код 403

Mr.
22.02.2018
11:20:04
я не хочу сейчас расписывать всех особенностей реализации системы, просто оно должно вернуть одну единственную ошибку если пользователь забанен

Dmitry
22.02.2018
11:20:21
Вы в одну модель по факту лепите кучу логики, которая относится к зоопаркам как таковым.

Mr.
22.02.2018
11:20:37
сколько логики?
вы мою модель видели?
я здесь за один валидатор спросил

Dmitry
22.02.2018
11:20:48

Mr.
22.02.2018
11:21:06
за существование в фреймворке из коробки необходимого функционала
я никакого кода не предоставлял
у меня есть повторяющаяся в многих местах модель пользователя - Consignee, которому будет отправлена (допустим) посылка
вот этого пользователя нужно валидировать
тот кто отправляет посылку уже давно провалидирован

Dmitry
22.02.2018
11:22:07
я здесь за один валидатор спросил
Загрузил человек xml, окей. Тут вы дали ошибку, что поле неверное, он его исправил. Далее по кругу и каждый раз нужно будет ему править его под каждое поле отдельно, вместо того, чтобы один раз увидеть все ошибки и быстро все поправить

Максим
22.02.2018
11:22:19

Admin
ERROR: S client not available

Mr.
22.02.2018
11:22:21
для остальных полей всё работает так как вы сказали
да ёб

Google

Mr.
22.02.2018
11:22:29
ладно
смысл здесь срач разводить
спасибо

Dmitry
22.02.2018
11:22:42

Mr.
22.02.2018
11:22:49
я выше отписал
у меня есть повторяющаяся в многих местах модель пользователя - Consignee, которому будет отправлена (допустим) посылка
вот этого пользователя нужно валидировать
тот кто отправляет посылку уже давно провалидирован
вы всей архитектуры не знаете, и уже каждый со своим решением лезет
наставлять на путь истинный

Dmitry
22.02.2018
11:23:37
В данной реализации yii всё так как реализовано - реализовано не просто так. Кмк вы заведомо уже на ложном пути. Пересмотрите бизнес логику вашего приложения.

Максим
22.02.2018
11:23:59

Mr.
22.02.2018
11:24:13
эт если сделать по вашей логике с сценариями

Максим
22.02.2018
11:24:18
Я уверен, что все можно сделать проще

Mr.
22.02.2018
11:24:29
конечно
можно вообще с нуля написать всё
но только существующие клиенты охуеют
переписывать всё под новый формат входных данных

Dmitry
22.02.2018
11:25:19

Максим
22.02.2018
11:25:33
эт если сделать по вашей логике с сценариями
ну так они для того и придуманы, чтобы под разные условия проверять. А если там есть 40 шагов, на половине из которых надо дальнейшую валидацию отменять, то я уже выше сказал, что логика у вас неправильная (на мой взгляд). я не знаю, что у вас за приложение

Dmitry
22.02.2018
11:25:38

Максим
22.02.2018
11:26:13

Google

Mr.
22.02.2018
11:26:26
да ладно, забейте
я тут больше с вами переписываюсь чем свой "говнокод" пишу

Dmitry
22.02.2018
11:27:19
?