Всё просто) Кнопка цитаты + ручки)
2.1 Убить валидацию и фильтры в AR
- BrusSENS
- Сообщения: 565
- Зарегистрирован: 2012.07.26, 06:51
- Откуда: Новороссийск
- Контактная информация:
Re: 2.1 Убить валидацию и фильтры в AR
Native Web - небольшой блог о веб разработке (временно на ремонте)
Режим обслуживания сайта для Yii 2.x.x
Режим обслуживания сайта для Yii 2.x.x
Re: 2.1 Убить валидацию и фильтры в AR
а AR все равно будет валидировать. а мне надо отменить одно правило в модели, а другое изменить. save(false)? неконсистентно. код превратится в лапшу своих валидаторов и save(false). Может лучше в одном месте валидировать без костылей?
- chungachguk
- Сообщения: 435
- Зарегистрирован: 2012.07.17, 11:52
Re: 2.1 Убить валидацию и фильтры в AR
Какой год только и разговоров, что о валидации в модели, которая не модель. Уже давно бы выпилили её за ненадобностью. Мне кажется Зеленин прав, единственная валидация, которую можно было оставить в AR это проверка соответствия введённых данных с полями БД: строка, не пустая, 12 символов и т.п., всё.
Re: 2.1 Убить валидацию и фильтры в AR
Тем не менее - выше привел пример, популярные реализации AR в разных языках содержат встроенную валидацию. Плюсы её - я так же уже описалBrusSENS писал(а): ↑2018.01.31, 22:57Убрать его из AR в угоду строгости. Часто встречаются проекты, где от этого приходится избавляться, хотя тем, кто это писал понравилось. Просто же. Yii многое позволяет делать, с этим и есть предложение бороться. PHP и веб девелоп вырос и накладывает определенные рамки на разработчика. Пора и Yii внести строгости.S c писал(а): ↑2018.01.31, 22:40 Так о чем речь то? есть же валидатор от model/form, используйте его. используйте его отдельно, исспользуя AR rules()
Речь о том что бы убить\убрать\вынести validate() в AR (который полезен). Этого делать не стоит.
Добавить новый сервис Validator - та без проблем. Хоть в рамках yii, хоть самому у себя в проекте.
как доработать? убрать удобный функционал? вынести его?
Re: 2.1 Убить валидацию и фильтры в AR
а если rules пустые\не переопределять?
Re: 2.1 Убить валидацию и фильтры в AR
а я спросил "мысль-то поясните. Что означает по вашему традиционное наличие валидации внутри модели?". Вы не объяснили, что это значит, и плюсов в конце концов не привели. То есть вы высказали позицию, что валидация внутри - это хорошо (ок, я согласен), но я стою на позиции, что валидация снаружи еще лучше.S c писал(а): ↑2018.02.01, 11:13Тем не менее - выше привел пример, популярные реализации AR в разных языках содержат встроенную валидацию. Плюсы её - я так же уже описалBrusSENS писал(а): ↑2018.01.31, 22:57Убрать его из AR в угоду строгости. Часто встречаются проекты, где от этого приходится избавляться, хотя тем, кто это писал понравилось. Просто же. Yii многое позволяет делать, с этим и есть предложение бороться. PHP и веб девелоп вырос и накладывает определенные рамки на разработчика. Пора и Yii внести строгости.S c писал(а): ↑2018.01.31, 22:40 Так о чем речь то? есть же валидатор от model/form, используйте его. используйте его отдельно, исспользуя AR rules()
Речь о том что бы убить\убрать\вынести validate() в AR (который полезен). Этого делать не стоит.
Добавить новый сервис Validator - та без проблем. Хоть в рамках yii, хоть самому у себя в проекте.
как доработать? убрать удобный функционал? вынести его?
Re: 2.1 Убить валидацию и фильтры в AR
пустые? load не будет работать? в целом это предложение закостылить, а не отрефакторить.S c писал(а): ↑2018.02.01, 11:13а если rules пустые\не переопределять?
Re: 2.1 Убить валидацию и фильтры в AR
конечно лучше, кто спорит и реализовать это самому довольно просто. я топлю за то, чтоб саму встроенную валидацию с AR не убирать. кому её достаточно - пусть использует её, без вынесенного валидаторано я стою на позиции, что валидация снаружи еще лучше.
Re: 2.1 Убить валидацию и фильтры в AR
Re: 2.1 Убить валидацию и фильтры в AR
это хорошо, ты прав. но как это реализовать без костылей? если никак, то надо выпиливать. Логично?
Re: 2.1 Убить валидацию и фильтры в AR
Re: 2.1 Убить валидацию и фильтры в AR
точно, совсем забыл. посоветовал бы не исспользовать load() - но я сам в данном случае поддерживаю именно простейший вариант, чуть ли не крудом сгенерированный, буду себе противоречить
ну вот тут конечно соглашусь, по минимуму бы хотяб продумать, чтоб для определенных нужнд можно было вообще не исспользовать AR валидацию. Правда и внешний валидатор не даст load() методу отработать, в любом случае править AR нужно из ядра
ну вот тут конечно соглашусь, по минимуму бы хотяб продумать, чтоб для определенных нужнд можно было вообще не исспользовать AR валидацию. Правда и внешний валидатор не даст load() методу отработать, в любом случае править AR нужно из ядра
Re: 2.1 Убить валидацию и фильтры в AR
ну как варик, если исспользуем внешний валидатор - то и значения сами присваиваем. нужна прост реализация setAttributes - которая не будет учитывать "безопастные" аттрибуты. Ведь мы сами валидируем, значит в модель приходят уже валидные данные. Получаем вариант load() + rules() из коробки для простых случаев (уже реализовано), и setAttributes() (присваивающий все данные без проверок) и свой валидатор (не реализовано).
Re: 2.1 Убить валидацию и фильтры в AR
Можно совместно попытаться замутить pull request для 2го варианта. Правда у меня почти 0 опыта в публикации оупен сорца, не потяну сам. Продумаем как будет выглядеть Validator изнутри (как снаружи с ним работать - zelenin уже нормальный пример привёл), и с setAttributes() тоже подумать нужно
Re: 2.1 Убить валидацию и фильтры в AR
Вызывайте $model->setAttributes($attrs, false) с флагом false. Тогда rules() учитываться не будут.
Re: 2.1 Убить валидацию и фильтры в AR
Это само собой, но выше уже писали что использовать везде save(false) и тд - на костыли похоже.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: 2.1 Убить валидацию и фильтры в AR
Я верно понял, что позыв выпилить валидацию из AR вызван исключительно тем, что в неё технически можно напихать слишком много, слишком сложно и так, чтобы при возникновении ещё одного bounded context было плохо?
Нравится Yii? Давайте сделаем его лучше!.
- BrusSENS
- Сообщения: 565
- Зарегистрирован: 2012.07.26, 06:51
- Откуда: Новороссийск
- Контактная информация:
Re: 2.1 Убить валидацию и фильтры в AR
Отчасти да.
Если Вы имеете ввиду текущую реализацию со сценариями - да.
Native Web - небольшой блог о веб разработке (временно на ремонте)
Режим обслуживания сайта для Yii 2.x.x
Режим обслуживания сайта для Yii 2.x.x
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: 2.1 Убить валидацию и фильтры в AR
Почему отчасти? Что я упустил?
Нравится Yii? Давайте сделаем его лучше!.
- BrusSENS
- Сообщения: 565
- Зарегистрирован: 2012.07.26, 06:51
- Откуда: Новороссийск
- Контактная информация:
Re: 2.1 Убить валидацию и фильтры в AR
Потому что таким образом мы ещё можем сделать более строгие рамки для разработчиков, тем самым внеся некоторые стандарты не позволяя делать как захочется. Есть объект, обрабатывающий пришедшие данные из Request и есть непосредственно объект, который работает в БД. Со сценариями, фильтрами и валидацией я уже как то столкнулся в чужом проекте. Отладка превратилась в сущий ад. А не было бы возможности сделать такое - и работать с таким проектом стало бы уже полегче.
Native Web - небольшой блог о веб разработке (временно на ремонте)
Режим обслуживания сайта для Yii 2.x.x
Режим обслуживания сайта для Yii 2.x.x