Юра
Ну если многа параметров как он написал видимо много придется мапить там
Ivan
А в чем проблема передать риквест в репозиторий?
Думал об этом. Чёт не нравится то что репозиторий будет напрямую с http реквестом работать.
Юра
Работай с параметр багом
Юра
Если понадобится в другом месте, сделаешь параметр баг вручную
Юра
Ну или фильтр как сказали. С ним удобнее будет потому что типизированные свойства
Юра
А что этот Filter::create() будет возвращать? Массив?
Нет это статический метод который вернет фильтр
Юра
Filter::createFromRequest($request)
Юра
Фабричный метод
Ivan
Репозиторий из фильтра должен создать SQL запрос?
Юра
Он должен использовать фильтр и квери билдер
Юра
А что он вернет я не знаю что тебе надо
Ivan
А если создать простую DTO чтобы мапить ГЕТ параметры и поля сущности? Что то вроде такого. $company_query = new CompanyQuery(); $company_query->whereStatus = true; $company_query->whereNameLike = $input->name; $company_query->page = $input->page; $company_query->sort = $input->sort; $company_query->order = $input->order; $companies = $repository->findByQuery($company_query);
Юра
А что такое инпут
Ivan
парам баг отвалидированный и нормализованный
artem
Я не все прочитал, но на своем проекте создал фильтр через chain of responsibility, если нет фильтра то отдает всё
artem
А на вход можно передавать гет массивом фильтр
Юра
Я вообще на каждую букву создаю класс
Юра
И класс строки содержит класс на каждую букву
Юра
)
Daria
Открытый вопрос - а кто придумал юзать формы в рест апи на симфони? Зачем так усложнять жизнь? Неужели это лучше более простого набора классов респонсов и валидаций, как в ларавеле?
Юра
А кто их юзает?
Daria
А кто их юзает?
я опять страдала над своим тестовым, решила поискать на гитхабе чужие примеры без фосрест и апи платформ и там эти монстры с формами)
Юра
Я тоже раньше юзал по привычке. Просто не додумывался заменить их сериалайзером
Юра
Раньше просто симфа всё-таки для админок юзалась а там обычно формы используются
Юра
Ну и форму можно рассматривать как слой ДТО который мапит данные в модель
Юра
Там же можно какую-то логику прописать и т.д.
Daria
Ну и форму можно рассматривать как слой ДТО который мапит данные в модель
А как можно валидировать и собирать ошибки без форм?
Юра
Да спокойно
Юра
Валидатором
Юра
Формы все равно делегируют валидатору
Юра
Сложность без формы с рилейшенами
Юра
Формы автоматически это дело обрабатывают
Daria
Спасибо)
Сергей
А кто их юзает?
Ну я использовал, и нормально) по моему удобно. Пробовал делать что то типа как в ларе, через аргумент резолвер с валидацией. Но как ты заметил, со связями не все так просто будет, но тоже не проблема) а вообще ща пытаюсь вникать в bloc и mobx😂 но это уже другая история..
Daria
Подскажите пожалуйста, как правильно валидировать в sf5 в роуте сырые гет параметры? Нп. GET /api/endpoint?param=value /** * @Route("/api/endpoint", methods={"GET"}, requirements={"param":"true|false"}) */ Аннотация не проверяет requirements, если параметр не участвует в определении урла. Вручную валидатором проверять?
Сергей
Обязательные параметры гет, это что то странное... Нельзя так. Может просто значения по умолчанию?
Daria
Добрый вечер) Есть вопрос в продолжение вопроса https://t.me/symfony_ru/32085 Если опциональный параметр в урле является одним из фильтров полей сущности, то правильно ли валидировать этот фильтр используя argument resolver и DTO?
Юра
Делаете ДТО с аннотациями
Юра
Сериалайзером мапите данные
Юра
Вадидатором валидируете
Daria
Делаете ДТО с аннотациями
у меня просто внутреннее противоречие, что зачем мне ДТО, сериалайзер и маппинг на чтение, а не на запись (т.е. когда ты планируешь записывать данные, то такой подход понятен, а когда не пишешь, а только валидируешь и идешь дальше делать выборки, то неочень)
Юра
Задача отвалидировать запрос я так понимаю
Юра
Какая разница выборка там или чтение
Юра
Ну можно упороться немного и сделать свой риквест листенер, свою аннотацию, и смотреть в листенере контроллер какой, получать аннотации и валидировать
Юра
Но лучше мне кажется дто
Юра
Группами валидации можно разделить что именно валидируется
Юра
Плюс дто можно наследовать
Юра
Сделать базовую с основными возможными полями типо пагинация и что там еще, а под конкретный запрос наследовать от базовой
Андрей
потому что проще сделать для разных роутов сделать разные ДТОшки чем придумывать универсальный который умеет всё
Юра
Вопрос, а кто-то валидирует фильтры?
Vlad
Тоже хотел бы узнать)
Max
Парни, привет. Подскажите пожалуйста. Репа бандла приказала долго жить. Я всю папку скопировал в src. пытаюсь использовать бандл, получаю ошибку не "не могу подгрузить класс из неймспейса"
Max
копировал всю папку "vendorname/bundleName"
Dima
https://symfony.com/doc/4.4/bundles/best_practices.html
Daria
Зачем ты валидируешь фильтр?
А как иначе вернуть юзеру ошибку, что он невалидные данные в фильтр передает?
Maxim Kainov
Необычный фильтр какой то?
Daria
А как он может невалидные данные ввести?
В рест апи он может написать /endpoint?filter=whatever, когда обращается к серверу, и надо это контролировать
Сергей
а по апи что ли только юзеры работают?
Daria
Юзер через инпуты все вводит же
Нет, клиентом апи может являтся не только фронтенд, а и другие серверы
Daria
Ну они же по доке будут все делать
вера в людей это хорошо, но нужно позаботиться о своем коде сначала)
Maxim Kainov
вера в людей это хорошо, но нужно позаботиться о своем коде сначала)
Валидировать формат даты? Зачем, если он и так отвалидируется при преобразовании.
Юра
Ну кропные конторы валидируют фильра
Юра
К примеру если сделать запрос с билибердой то в ответ прийдет именно ошибка валидации фильтра
Юра
Типо значение фильтра неаалидно
Egor
О каком тут ДДД говорить, если люди задаются вопросом зачем пользовательский ввод валидировать 😅
Сергей
😆
Юра
Можно говорить только о ДДТ