Maxim Kainov
Похоже, да
Roman
причем, включить через kernel events
Roman
ну либо пойду гуглить, как он на entity включается
Roman
фильтр
Roman
задача - на публичной части фильтр включить, в админке выключить на списке entity
netspike
is_enabled: type: boolean
Roman
да, так
netspike
И ?
Roman
есть список entity, он имеет этот признак. Нужно, чтобы ВСЕ запросы для этого списка на публичной части использовали этот фильтр, а в админке нет
Roman
сделал по аналогии со статьей, выше приводил - работает
netspike
Так в чем тогда проблема ?
netspike
Если работает
Roman
Возможно есть способы проще
netspike
Способ проще от тебя зависит, если ты понял смысл как это работает
Roman
) возможно. Ну в любом случае, задача пока решена, потом можно подумать о том, как улучшить решение.
Ilya 🃏
Привет, подскажите bestpracticies, стоить ли каждому методу в сервисе отвечающему за изменение сущности и её зависимостей добавлять что-то вроде $flush = true аргумента? Например, когда вызывается метод извне сервиса и изменяется только один объект, то ждать других изменений нет смысла и можно сразу зафлушить изменения. Но есть методы, которые сначала изменяют сущность, потом обращаются к другим методам, изменяющим их отношения и т.д. Получается цепочка из методов, в каждом из которых есть $em->flush(). И чтобы лишний раз не обращаться к бд, думаю везде предусмотреть последним аргументом данное решение. Насколько это правильно и кто-то делает также\похоже?
Maxim Kainov
По возможности лучше не делать такой параметр
Ilya 🃏
Sergei
Что значит невозможно проследить?
Поменялся порядок вызова методов сервиса, например. Правильно выше сказали - флаш лучше в контроллере вызывать
Sergei
Когда уже очевидно, что вся внутрення логика отработала
Ilya 🃏
Понял, спасибо
Слава
Добрый вечер. Подскажите, кто работает плотно с fosrest: Как в post - методах, принимать массив id подсущностей так, чтобы они сразу конвертились в сущности и ставились сущности, которой приходит в контроллер сразу чайлдами. Ну, например: Есть класс учитель, у учителя есть уроки. Сейчас мне в контроллер приходит учитель (Request Body Converter Listener), я хочу, чтобы с фронта мне также слали массивчик: "уроки": [ 1, 5 ,7 ] и этот массивчик сразу конвертился в сущности, и цеплялся к учителю
Ilya 🃏
Кто как хранит вспомогательные функции, которые могут быть востребованы в любом месте проекта? Создаёте класс отдельный и static методы определяете или как?
Ilya 🃏
Что-то типа Utilities/Helper
Юрий
А если в отдельный бандл их запаковать, чтобы без статики инжектить?
Сергей
🤯
Anonymous
Не надо паковать ничего в бандл
Сергей
инжектить без статики можно и без бандла)
Ilya 🃏
Т.е. лучше в сервисе трижды написать один и тот же кусок форматирования?
Ilya 🃏
Ilya 🃏
$date = new \DateTime(); $date->setTimezone(new \DateTimeZone($name)); return $date->format('T'); $date = new \DateTime(); $date->setTimezone(new \DateTimeZone($name)); return $date->format('T'); $date = new \DateTime(); $date->setTimezone(new \DateTimeZone($name)); return $date->format('T');
Maxim Kainov
В чем проблема? В ентити надо вызывать?
Ilya 🃏
Сервисы вроде как должны делать больше бизнес-логику, чем обработку универсальных данных
Ilya 🃏
Я не эксперт, просто интересно
Ilya 🃏
Чем лучше хранить в сервисе, нежели в обычном классе
Maxim Kainov
Сервисы вроде как должны делать больше бизнес-логику, чем обработку универсальных данных
У тебя разные могут быть сервисы, они могут делать что угодно
Maxim Kainov
В одних бизнес логика, в других еще что то
Maxim Kainov
Почему?
Ну погугли, чем плохи статические методы
Сергей
оставь в статике. не создавай проблем
Maxim Kainov
Зачем вообще di контейнер придумали, делали бы статику везде, да и все )
Сергей
а вот его придумали, теперь только его и используем, да? дают инстументы, которым надо пользоваться когда это уместно - а не абсолютно всегда
Maxim Kainov
а вот его придумали, теперь только его и используем, да? дают инстументы, которым надо пользоваться когда это уместно - а не абсолютно всегда
Ты же не знаешь, что дальше будет. Со временем контейнер может понадобиться, и тебе придется все переделывать. Лучше уж сразу в виде сервиса сделать, тем более это несложно.
Сергей
ну вот конкрентно в этом примере - думаю врядли
Roman
в фабрику фабрик, выпускающую фабрики
Сергей
а если и так, сделать его сервисом - тоже дело оч простое
Maxim Kainov
Ну и лучше не просто Helper, а какой-нибудь DateHelper
netspike
Это че за хренотень то
Сергей
как будто вендоры частино обновились) ничего не обновляли?
netspike
пиндец
netspike
Поставил 5.1.3 сф
netspike
Доктрину обновили
Dima
Походу deprecated убрали
Юра
Надо перед обновлением смотреть проверять депрекейшны
netspike
Надо перед обновлением смотреть проверять депрекейшны
версии: "doctrine/doctrine-bundle": "^2.0", "sensio/framework-extra-bundle": "^5.6", должны быть
netspike
Пока только это решение проблемы
Юра
Да на даче стоит
Юра
Дизельный
Юра
Что именно тебе не понятно в генераторах
Юра
С помощью генератора ты можешь генерировать один элемент за вызов
Maxim Kainov
Тоже не понимаю зачем генератор ентити, если проще скопипастить
Dmitry
В добавок мейкер все делает в захардкоженных дефолтных каталогах
Maxim Kainov
Я мейкером пользуюсь только чтобы создать сущность с репозиторием, а поля уже сам добавляю
Roman
Товарищи, а можно ли отключить фильтр доктриновский на уровне ParamConverter? а то невозможно entity подгрузить для редактирования в админке - вешается isEnabledFilter на запрос.
Максим
Ребят, скажите пожалуйста, anonymous: false в security.yaml - производит редирект, но симфони как api.. нужно просто возвращать 401 для неавторизованных.. Как это реализовать? Просто щас делает мой коллега так, в каждой аннотации указывает проверку, is_granted, что авторизован.. и после этого возвращает ошибку автоматом.. но в каждом контроллере писать в анотации - как мне кажется немного напряжно.. лучше в 1 файле описать .. Есть такоя опция?
Сергей
а какой у вас аутентификатор используется? или свой guard?
Сергей
покажи настройку firewall для /api
Сергей
если guard - в функции start 401 верни и все.
Максим
security: # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers providers: # used to reload user from session & other features (e.g. switch_user) app_user_provider: entity: class: App\Entity\User property: email firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: # pattern: ^/ anonymous: true security: true remember_me: false guard: authenticators: - App\Security\LoginFormAuthenticator # https://symfony.com/doc/current/security/impersonating_user.html # switch_user: true encoders: App\Entity\User: algorithm: bcrypt cost: 12