John
так как он пытается искать /en а его нету
John
кто может что подсказать в этом вопросе, как лучше поступить может кто сталкивался
Bo
А у тебя FlatObject наследует EstateObject?
На данный момент нет, только имплементирует интерфейс
Алексей
Ребят, помогите с валидационными правилами, пожалуйста.
Алексей
К примеру, у меня есть поле, которое может быть равно _строке_ "true" или "false" . Как правильно проверять его значение в required_if ? "required_if: a,false" не прокатывает.
Nikita
Ребят, помогите с валидационными правилами, пожалуйста.
пожайлуйста прочитай https://laravel.com/docs/5.5/validation#rule-required-if
Алексей
Читал уже много раз. Проблема в том, что если значение "false", а правило выглядит так: "required_if:a,true", то оно даст ложное срабатывание.
Алексей
Потому что, видимо, непустая строка преобразовывается в true
Nik
влияет. ты сейчас на одном урле выдаешь микс языков. не надо так
Nikita
Читал уже много раз. Проблема в том, что если значение "false", а правило выглядит так: "required_if:a,true", то оно даст ложное срабатывание.
Видимо плохо читал. required_if используется для проверки второго поля если первое равно value. А что ты делаешь?
John
у меня получается вот такая ситуация: у меня есть мидлware который получает текущую локаль по урлу, например ссылка на японскую версию сайта выглядит вот так: site.ru/jp
John
и получается он берет jp и ставит эту локаль
John
все ок все работает
John
но когда я хочу при просто заходе на сайт site.ru определить язык по локали браузера, то он его определяет, ставит локаль нужную но сайт выглядит также site.ru
Алексей
Видимо плохо читал. required_if используется для проверки второго поля если первое равно value. А что ты делаешь?
Ко мне приходит запрос с разными полями, которые могут быть равны тем или иным значениям. Итак, если поле "а" равно "true", то тогда поле "б" обязательно и его нужно проверить.
Nikita
Хорошо, покажи полную запись тогда. Что ж ты кусками кидаешь :)
Алексей
фронт не может тебе прислать бул чисто технически
А я и не хочу проверять булево значение, я хочу узнать, равно ли оно _строке_ .
John
а мне нужно чтобы ставилось site.ru/JP и притом при переходе на просто site.ru который по умолчанию на английском, он не ставил заново японский язык по локали, иначе клиент из японского сектора так и не сможет посмотреть английскую версию сайта
Алексей
Хорошо, покажи полную запись тогда. Что ж ты кусками кидаешь :)
"systemUserID" => "required_if:isSystemUser,true|required_if:existing,true|integer|exists:system_users,id"
Nikita
Сделай дамп реквеста, покажи что приходит.
Алексей
Сделай дамп реквеста, покажи что приходит.
systemUserID: Select System User existing: false new: true isSystemUser: true
Nikita
true/false это у тебя точно строки?
Алексей
Ну, могу сделать dd
Алексей
Момент.
Nikita
так, а я шо просил))
Алексей
так, а я шо просил))
array:17 [ "firstName" => "ads" "insertion" => "adfs" "lastName" => "adsf" "street" => null "house" => null "zip" => null "city" => null "email" => "s05@kshlerin.org" "phone" => null "rate" => null "function" => "Cashier" "isSystemUser" => "true" "role" => "Accountant" "pin" => "213" "systemUserID" => "Select System User" "existing" => "false" "new" => "true" ]
Nikita
Так. А теперь один раз - что работает не так?)
Nikita
Потому что вроде всё ок
Алексей
Потому что вроде всё ок
Это правило тоже не прокатывает: "systemUserID" => "required_if:existing,true|integer|exists:system_users,id"
Nikita
почему не прокатывает? при existing = true и пустом systemUserID получаем феил
Nikita
нет?
Алексей
почему не прокатывает? при existing = true и пустом systemUserID получаем феил
Нет, смотри: Поле existing = "false". Правило говорит о том, что если existing = true, тогда проверять systemUserID. Проблема в том, что existing = "false", но проверка происходит всё равно.
Maksim
На данный момент нет, только имплементирует интерфейс
Ну тогда может стоит интерфейс указать в тайп-хинтре метода?
Алексей
Когда поле existings = false, поле systemUserID валидироваться не должно.
Nikita
ну так оно и не валидируется
Nikita
хочешь с пустым пропустит, хочешь вообще без поля
Nikita
стоп
Nikita
у тебя ж там ещё другие правила)
Алексей
у тебя ж там ещё другие правила)
Другие правила есть, но проблема только с этим.
Nikita
Другие правила есть, но проблема только с этим.
Та в чём проблема то если existings = false то поле systemUserID не является обязательным если existings = true то поле systemUserID обязательно
Nikita
Именно так и работает required_if
Алексей
Та в чём проблема то если existings = false то поле systemUserID не является обязательным если existings = true то поле systemUserID обязательно
Абсолютно правильно. Но почему-то валидация работает так: при existings = false - выполняется exists:system_users,id .
Nikita
Ну так я тебе о том же
Nikita
Другие правила фейлятся
Nikita
А не это
Алексей
А не это
Нет, Никит, именно это. Потому что клиентская часть получает сообщение: {"message":"The given data was invalid.","errors":{"systemUserID":["The system user i d must be an integer."]}}
Nikita
😂
Nikita
["The system user i d must be an integer."]}
Nikita
действительно
Nikita
проблема в require
Nikita
Когда уже люди начнут учить программирование с базового курса английского))
Nikita
Тебе сам ларавел говорит что значение должно быть целым
Nikita
А ты пол часа доказываешь что проблема в require)
Алексей
проблема в require
Ну, как я понимаю это правило: Если existings = true, тогда выполнять integer|exists:system_users,id . Иначе - не выполнять. Теперь: existings у меня = false. Вопрос почему выполняется integer|exists:system_users,id ?
Nikita
Потому что ты неправильно понял валидацию)
Nikita
Это отдельные правила
Алексей
Отдельные?
Алексей
Они же связанными должны быть.
Alexander
Пиши кастомное правило для валидации и не морочь голову
Nikita
Можно поморочить через sometime
Nikita
Но я никогда не использовал его, так что хз как там оно работает
Alexander
sometimes не поможет ему потому что он включает правила если поле присутсвует
Alexander
а оно у него всегда присутсвует
Nikita
А этого в условии небыло
Nikita
про то что всегда присутствует)
Alexander
Ну судя по всему у него там селект какой то
Nikita
но в целом я за кастомное правило
Alexander
и в селекте дефолт значение стоит текстовое
Алексей
Кому должны?)
То есть, даже если existings = false, то остальные правила, следующие за required, будут выполняться?
Alexander
да
Alexander
https://laravel.com/docs/5.6/validation#custom-validation-rules
Alexander
пиши
Алексей
Жесть, попробовал: systemUserID" => "required_if:roles,blabla|integer|exists:system_users,id" Результат тот же.