Юра
В чем проблема повесить аннотацию на контролер метод?
Юра
А вообще вроде это лучше делать как-то так https://symfony.com/doc/current/http_cache/varnish.html
Павел
В чем проблема повесить аннотацию на контролер метод?
Анотация/Атрибут должна что то делать. Например декоратор, но именно над методом контроллера можно это сделать или нет - вопрос отдельный
Юра
А что мешает не пойму
Юра
Так же как делают любые аннотации
Павел
Что на что повесить - не поймем)
Павел
Так же как делают любые аннотации
Анотация - это интрукция к каким то доп дейсвтиям. Например создать или заполнить сервисы
Павел
Что создать или заполнить в случае кэширования экшена контроллера?
Юра
Нужно просто написать ивент листенер в котором проверять есть ли такая аннотация у контроллера, если есть, то писать в аттрибут риквкста кеш ключ, а в другом листенере с овтетом писать ответ в этот ключ
Юра
Лара вей получается с магическими методами )
Юра
Я бы делал короче варнишем )
Юра
Чтобы отделить от кода вот это вот все
Юра
Можно еще обернуть весь метод контрллера в стандартный симфони кеш, типо дай такой ключ, если нет выполни это и верни html
Юра
Ну листенерами можно. В атррибут через expression language получить кеш ключ и листенерами разрулить
The Ant
А вообще вроде это лучше делать как-то так https://symfony.com/doc/current/http_cache/varnish.html
Почитал про варнишь сразу. Но как мне кажется в моем кейсе это будет тот ещё пиздец. Проблема в том, что сайт не один, их сотни )
Юра
Ну и ставишь варниш после нгинкса и пусть он рулит
Юра
Главное настроить его
Юра
Зато централизированно
Юра
А с твоим кешем напримеря нужно вот управлять, скидывать, нужно делать интерфейс для этого
Юра
Пилить опять велосипед
The Ant
Ну и ставишь варниш после нгинкса и пусть он рулит
вопрос в том, будет ли это один конфиг варниша на пару сотен доменов, или пара сотен конфигов? ) Второй вариант чет ваще не айс
Юра
Ну один наверное можно
Юра
Просто хостнейм в кеш ключ пойдет
Pavel
Работал кто-то с данными из EditorJS? Как лучше хранить ее блоки в реляционной бд? С одной стороны можно хранить весь блок в JSON поле, но тогда поиск по тексту будет адом, а с другой стороны можно парсить блоки на одну огромную сущность под все виды блоков, так поиск +- норм, но это огромная сущность
Pavel
я думал в это направлении, только думал что отдельно в блоках с текстовым содержанием держать поле rawData, держать все блоки в родительской сущности в контексте поиска звучит как лучшая идея, да
Юра
Только так да
Pavel
то есть лучше хранить блоки в отдельных сущностях я для поиска при обновлении склеивать поля это лучшее решение?
Alexey Mishurovskiy
А как в EasyAdmin сделать фильтр по умолчанию, то есть например есть необработанные заявки, и чтобы при заходе в соответствующий раздел сущности по умолчанию фильтруются и показываются только необработанные и при необходимости фильтр можно снять и посмотреть все
Юра
то есть лучше хранить блоки в отдельных сущностях я для поиска при обновлении склеивать поля это лучшее решение?
Ты можешь сохранять весь html по идее и его вставлять в страницу и искать по нему
Юра
А если редактировать нужно, то тогда рендерить эдитор
Юра
Ну отдавай html строку
Юра
Но я сталкивался с тем что эдитор джс генерит замусоренный хтмл
Юра
Поэтому я написал свой аналог эдитор джс только намного круче )
Юра
С вложенными элементами и все такое
Юра
И там есть метод getHtml() я его вызываю при сохранении и сохраняю в БД
Alexey Mishurovskiy
Если не горит - завтра с утра могу посмотреть. Я тут EasyAdmin знатно занимался на днях)
Не горит.. просто удивился, что нет такой элементарной штуки
Pavel
И там есть метод getHtml() я его вызываю при сохранении и сохраняю в БД
это хорошо, если используется на одном клиенте, а например, если фронт и мобилка 2 разных клиента, то это уже не очень. Лучше отдавать json с бэка который будет рендериться на клиенте, если мы не говорим про сср конечно
Юра
Не совсем понял почему не очень если несколько клиентов
Nikolai
то есть лучше хранить блоки в отдельных сущностях я для поиска при обновлении склеивать поля это лучшее решение?
Храни весь json в одной колонке, в соседней колонке храни склеенный из json текст, по нему будешь делать поиск. Какой смысл разбивать каждый блок на сущности?
Nikolai
Если бы у тебя был эластик, то тебе тоже пришлось бы склеивать текст и как бы дублировать его там) Так что все норм
Azizxon
Здравствуйте При написании в консоли php bin/console deploy выходит ошибка: "}" is not recognized as an internal or external command, operable program or batch file Как решить? Спасибо заранее!
Kirill
Всем привет! Подскажите, пожалуйста, как этим пользоваться?) https://symfony.com/doc/4.4/reference/constraints/UniqueEntity.html
Kirill
Мне нужно перед созданием\сохранением проверить, что такой записи еще нет. В примере просто метод loadValidatorMetadata объявляется в entity и все
Vlad
https://symfony.com/doc/6.3/reference/constraints/UniqueEntity.html
Vlad
$this->validator->validate($entity);
Kirill
Спасибо!
Ivan
Всем привет! Никто не сталкивался с таким странным поведением, что вот делаю logout пользователю, через стандартный механизм, оттуда идёт редирект на страницу авторизации (с заголовками, что куки авторизации необходимо удалить). Однако далее куки остаются и пользователь считается авторизованным. Со старым ID сессии и значением куки RememberMe.
Ivan
GET /user/logout/ ... Set-Cookie: rmt=deleted; expires=Sun, 06 Feb 2022 06:03:20 GMT; Max-Age=0; path=/; httponly; samesite=lax Set-Cookie: rtsid=deleted; expires=Sun, 06 Feb 2022 06:03:20 GMT; Max-Age=0; path=/; httponly; samesite=lax
Ivan
Думаю, это как-то связано с такими вот заголовками Cache-Control: max-age=-172800, must-revalidate, private Date: Mon, 06 Feb 2023 06:03:21 GMT Expires: Wed, 08 Feb 2023 06:03:21 GMT
Vladimir
Доброго дня, подскажите как починить денормализер для работы с enum class SellerSearchDto { public string|null $name = null; public SellerType|null $type = null; } $data = $this->denormalizer->denormalize($request->query->all(), SellerSearchDto::class); ругается: The data must belong to a backed enumeration of type App\Module\Marketplace\Enum\SellerType
Павел
Павел
Хуясе, сам писал чтоль? )
Ну типо, вроде не много чтобы удивляться)
The Ant
Ну типо, вроде не много чтобы удивляться)
Просто, нафига? ) врятли тебе этот кейс пригодится когда либо )
Павел
Просто, нафига? ) врятли тебе этот кейс пригодится когда либо )
Интересен был кейс и как достаются атрибуты в контроллере. Ну и в целом задача вполне адекватная. Кэшить роут одним одним атрибутом
The Ant
спортивный интерес короче
Vlad
надеюсь свое говнецо наклепал уже)
Kirill
что предложишьв взамен?
либо руками через league, либо страдать с JMS
Kirill
но и то и другое получше будут симфы
Kirill
оно идеально годится для примитивных DTO со скалярами, работает отлично
Kirill
но как только начинают появляться VO, коллекции и алгебраические типы - ломается от каждого чиха
Kirill
ну или конструктор с промоутед полями
Vlad
ну тут да, хотя знаешь странная затея резолвить vo
Vlad
в дтошке)
Vlad
ну это чисто мое мнение
Kirill
енам - это тот же VO
Vlad
да
Kirill
ну или DateTime
Vlad
и я их не резовлю)