Интересует вопрос, есть ли в Laravel методы, позволяющие фильтровать вводимые данные? К примеру в Joomla есть замечательные методы getInt(), getString() и т.п., которые позволяют получить переменную только с теми данными, которые мы просим. И не важно, пусть пользователь введёт "abc", но метод getInt() вернёт нам нуль в этом случае.
Собственно и вопрос, есть ли такое в Laravel, или может посоветуете на github какой-нибудь подобный и хороший пакет? Могу написать сам, но смысл, если таков уже существует и активно применяется.
P.S. Учусь Laravel, не ругайте, вопрос реально важен :-)
И не важно, пусть пользователь введёт "abc", но метод getInt() вернёт нам нуль в этом случае.
Это же прямо-таки приглашение к размножению багов. Слабая типизация и так не подарок, так вы ещё и явные ошибки хотите игнорировать... Данные нужно валидировать и если они валидацию не проходят - кидать ошибку сообщать об этом пользователю.
adamsafr: курс, конечно, шикарный, но он не решит вопрос, к примеру, фильтрации нежелательных тегов в переданных на сервер данных. Можно руками везде прописать условия, согласен, но если уже написан пакет, зачем тратить на свой время или на перенос того же класса из Joomla. Если переводить строку в число будет грубо, о чём мне сообщили выше, то вот фильтрацию частичную от тех же тегов или атрибутов иметь нужно.
Данные нужно валидировать и если они валидацию не проходят - кидать ошибку сообщать об этом пользователю.
И как раз этот процесс в Laravel сделан довольно удобно: помимо расширяемого валидатора есть Form Requests, автоматическая обработка ошибок валидации, управление сообщениями об ошибках валидации и т.д.
фильтрацию частичную от тех же тегов или атрибутов иметь нужно.
Laravel-way - это когда вы находите framework agnostic библиотеку, которая реализует нужный функционал, а потом либо ищете адаптер для неё под Laravel на packalyst.com, либо пишете его сами, либо просто используете библиотеку напрямую, если она проста в инициализации.
Алексей Уколов: Да, благодарю за наставление :-) Писать адаптеры потихоньку учусь, простенькие уже работают, так что буду искать библиотеку дальше сам и знакомить с Laravel.
Алексей Уколов: то и имел ввиду, что взять готовые решения или прикрутить библиотеку, которая под Laravel не адаптирована. Но я ниже оставил ответ, там как раз ссылка на готовую библиотеку, которую планирую использовать, если не найду явных недочётов.
Хочу поделиться найденной библиотекой для Laravel, которая поможет чистить нежелательные теги\атрибуты в строках: HTMLPurifier. Пока не тестировал, но количество скачиваний на packalyst внушает доверие.
Так же делаем вывод из некоторых комментариев, что приводить строку к числу там, где ожидаем число - не хорошо, и необходимо провести валидацию данных (спасибо Алексей Уколов, учту).
Само по себе приведение строки к числу - это наоборот хорошо, на мой взгляд (я за типизацию). Плохо - приводить любую строку хоть к какому-то числу. От того, что вы превратите "Вася" в 0 или "42 пингвина" в 42 никому лучше не станет. А вот кастануть "2" в 2 - это я только за.
Только по ссылку у вас - провайдер для Laravel к настоящей библиотеке, а не сама библиотека. И она довольно популярна и, как видно по репозиторию, хорошо протестирована.
Алексей Уколов: "Плохо - приводить любую строку хоть к какому-то числу." - вот именно про это я выразился, что любую строку к числу (пусть даже и к нулю).
"Только по ссылку у вас - провайдер для Laravel к настоящей библиотеке, а не сама библиотека. " - ну, благо composer библиотеку через зависимости тоже притянул :-)
vladislav tu: нееет, всё было бы намного проще :-) Кстати, может подскажете, как на тостере красивые цитаты оформлять? :-D Глупый вопрос, ради него не хочется топик поднимать.