Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как валидировать данные?
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Всем привет.
Возникла проблема по поводу валидации данных.
Рассмотрим ее на примере модели пользователя, у этой модели есть свойства (логин, мыло, пароль...),
и на странице регистрации, нужен ввод капчи...
Правила валидации я хочу разместить в модели
(так как только модель должна знать какие данные ее нужны),
но только правила насчет валидации свойств,
как-то неправильно я считаю сувать правило валидации капчи вместе с валидацией свойств,
дескать модель пользователя не должна знать о всяких там проверках капчи...
Но куда же засунуть тогда подобные правила, видел что в различных фреймворках создают еще один класс, сущность формы типа, и туда уже можно засунуть подобные правила,
но как быть тогда с правилами по сущности пользователя, ведь на странице регистрации нужно выводить все ошибки...
Надеюсь суть проблемы понятна.
Наверняка у вас уже были подобные случаи,
поэтому хотелось бы услышать ваши мнения по валидации...
Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012
Помог: 4 раз(а)
какбы особой кучи то и нету... просто будет класс формы каптчи CaptchaFormType, который разумеется можно использовать хоть где, например если куда-то надо вставить каптчу то в форм билдере прописывается:
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
caballero пишет:
именно к тому что нет необходимости вообще что либо плодить
Даже если и воспользоватся валидацией при помощи css3 и html5,
не говоря о том что нужно будет делать делать костыль на js для старых браузеров,
то придется делать класс формы регистрации по этому классу потом будет рисоваться эта форма в вью.
То правила валидации придется писать прям в этом классе формы, но если понадобиться сделать регистрацию по api (или еще как),
то там придется делать еще один класс, и опять там же прописывать те же правила валидации.
И еще допустим например, на странице изменения данных (еще один класс формы) пользователя,
правила валидации почти такие же как и на странице регистрации.
И получается опять надо будет дублировать эти правило, что собственно и не есть хорошо...
Поправьте если что не так.
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Поправьте если что не так.
многа букаф.
зачем вообще все эти сложности, и какие то классы валидации, классы формы
если речь не о готовом фреймворке где это просто уже есть (ребята индусы постарались)?
в подавляющем случае правила валидации простые как грабли - требуемое поле, формат данных (дата , email) и т.п.
это прописывается прямо в атрибутах полей HTML5 формы, включая регулярки
остается бизнес логика - тут как правило простая проверка - например на уникальность логина - это конкретный запрос к БД.
валидация с какими то мудренными правилами - применяется редко.
что касается старых браузеров - это проблемма для существующих продуктов.
для новых продуктов нет смысла поддерживать старье - пока вы разработаете и доведете систему до товарного вида - проблем со старыми браузерами уже не будет. А если речь об однократном сайте на сейчас то тем более там нет смысла создавать кучу каких то мудренных классов.
Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012
Помог: 4 раз(а)
ммм... а какие "мини" фреймворки уже изучил?
caballero
Отправлено: 05 Апреля, 2013 - 21:47:48
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Но ведь мы сейчас о клинте говорим не так ли, на сервере тоже нужны будут такие же проверки +
если клиент не пропустит будут не нужны. Иначе можно и о классах валидации сказать что после них еще надо валидировать на уровне сервера БД
а при заходе на старый браузер перекидывать на страницу скачавания хрома.
Цитата:
Так что думаю будет целесообразно пока сделать сущность формы регистрации.
не вижу никакой целесообразности как и связи с тем что я написал
Цитата:
Приходится, так как лучше 1 класс формы регистрации создать, чем потом если что менять в 3-4 файлах...
у вас не будет повторятся форма в нескольких файлах. если там и будут похожие формы (например редактирование профиля) то там будет несколько отличающийся набор полей и отличающиеся правила валидации. и что, будете лепить несколько вариантов классов валидации? я уже не говорю о том зачем именно класс. Только потому что ООП это круто?
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
digi пишет:
ммм... а какие "мини" фреймворки уже изучил?
Никаких, думаю универсального фреймворк вряд ли существует.
caballero пишет:
если клиент не пропустит будут не нужны. Иначе можно и о классах валидации сказать что после них еще надо валидировать на уровне сервера БД
а при заходе на старый браузер перекидывать на страницу скачавания хрома.
Хм, мы говорим о запросах, и тут не важно как он отправлен с помощью формы, которую провалидировал клиент, или через тот же curl, так что нет никаких гарантий корректности правильности данных, поэтому
придется делать повторную проверку на сервере...
caballero пишет:
у вас не будет повторятся форма в нескольких файлах. если там и будут похожие формы (например редактирование профиля) то там будет несколько отличающийся набор полей и отличающиеся правила валидации. и что, будете лепить несколько вариантов классов валидации
Да несколько классов придется лепить согласен, но другого варианта вроде бы пока и нет (в 1 посте я писал про эти дубликаты), но все же лучше чем делать одни и те же проверки на клиенте и на сервере...
caballero пишет:
Только потому что ООП это круто?
Нет, будем считать что в этом случае это просто функции которые обернуты в слово class...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.