slo_nik
Можно, но изначально был установлен knp) Всё работало и тут такой финт ушами!
Юра
Сори за офтоп. Язык вульва продолжает развиваться. Уже успешно компилиться такой код
The Ant
есть идеи как превратить это барахло в красивую строчку, одну? Потому что эррей_мап не работает с ошибками от валидатора симфы, там сраный объект какой-то.
Vlad
Сделай normalizer для ConstraintViolationList и спряч это барахло.
Andrey
доброго дня. а подкажите, как на symfony6 doctrinebundle инсталлится? если поставить doctrine/doctrine-bundle:"2.5-x-dev", то он ищет doctrine.orm, причем если задампить то, где он его ищет - то вываливается стандартное содержимое doctrine.orm из doctrine.yaml если попытаться поставить symfony/orm-pack, в том числе версии dev-main, то все заканчивается тем, что doctrine/doctrine-migrations-bundle поддерживает symfony/framework-bundle до 5 версии, в том числе 3.2.x-dev что я делаю не так?..
jenia
Хочу поменять язык через слушатель но не получается отображать ошибке на нужном языке. Всегда работает только по умоклчанию (английский). Дебажил и я задаю нужную локал в приведенном файле но почему ошибка только на английском - я не понимаю :( https://gist.github.com/evgeniy123/470b07b16d29aaf5ff78a23a294e4cdc Controller: $request->getCurrentRequest()->getLanguages() [0]=> « fr »
Юра
А почему там закоменчен код
jenia
А почему там закоменчен код
Он старый и поэтому закомнечен .
jenia
А почему там закоменчен код
public function process() { $locale = self::parseLocale( $this->request->getCurrentRequest()->headers->get('Accept-Language'), $this->locales ); $this->request->getCurrentRequest()->setLocale( $locale); } Уже и так исправил и все равно не работает 🙁
Юра
Проверь что твой листенер вызывается до Локаль листенера
Юра
Который собственно устанавливает транслейтеру локаль
Юра
Я поэтому не люблю листенеры
Юра
Хер пойми что за чем идет и что где меняется
Юра
Код размазан получается как лапша по тарелке
jenia
Хер пойми что за чем идет и что где меняется
у меня в листенере устанавливается верная французская локал. Затем смотрю что после в самом контроллере так же она сохраняется. а вот когда захожу в валидатор то там идет сброс => « en » :(
Юра
The custom listener must be called before LocaleListener, which initializes the locale based on the current request. To do so, set your listener priority to a higher value than LocaleListener priority (which you can obtain running the debug:event kernel.request command).
Юра
Вот этот исключи момент пожалуйста
Юра
То что в контроллере ты получаешь нужнцю локаль из риквеста не значит что транслейтор её использует
jenia
Юра
Ну вот теперь ты знаешь что с листенерами надо еще контролировать что за чем вызывается
Юра
Реально такой антипаттерн этот ивент бас жуть
jenia
Реально такой антипаттерн этот ивент бас жуть
А как ты делаешь смену локали API ?
Vlad
Добрый, подскажите кто как решает вопрос с документацией валидационных рулов с api doc бандлом
Alexander
Добрый, подскажите кто как решает вопрос с документацией валидационных рулов с api doc бандлом
А зачем? Обычно решают вопрос со структурой ответов 400 чтобы ошибки с бекенда вывести под полем формы, а чтобы описывали правила - ни разу не видел.
Vlad
А зачем? Обычно решают вопрос со структурой ответов 400 чтобы ошибки с бекенда вывести под полем формы, а чтобы описывали правила - ни разу не видел.
Не всегда выводят текст ошибки который приходит с бэка. Есть кейсы когда ошибки приходят константами опираясь на которые делают локализацию на фронте
Alexander
Все равно остается не ясным, зачем описывать правила валидации в доке.
Alexander
В вашем кейсе достаточно перечислить возможные константы и их значения, как мне кажется. Правила валидации это логика, по сути вы хотите описать как правильно дублировать код с сервера на клиенте в своей документации.
Andrey
Всем привет. Хочу сделать предложку новостей, примерно как в вк. То есть пользователь предлагает новость, она отправляется на модерацию, на модерации админ может нажать опубликовать или отклонить. И вот у меня есть админка easy admin. Может быть возможно как-то в ней такую панель для модерации реализовать? Я вот гуглю, но что-то пока без результата, кто-то может делал подобное?
Andrey
Кастомная кнопочка с ajax ведущим на контроллер где будет подтверждение или отклонение. Но придется свой js или в ассеты присобачить или в шаблон
Если я правильно понял, нужно переопределить стандартный шаблон админки, в нем кнопку сделать, там же в шаблоне и аякс можно написать?
The Ant
О нифига, дизайн поменяли наконец таки на сайте симфы?
Sergey Romanenko
О нифига, дизайн поменяли наконец таки на сайте симфы?
Но документация все такая же неюзабельная осталась
Sergey Romanenko
Я для своей документация как только не выкручиваюсь чтобы всем угодить. Мозг ломаю чтобы ее сделать дружелюбной. А дока симфони почему то написана по принципу - и так сойдёт
Sergey Romanenko
Кстати
Sergey Romanenko
тут похоже баг в симфони консоли https://github.com/symfony/console/blob/5.3/Color.php#L178 крайне сложно было его поймать, но это return (int) $diff * 100 / $v; нифига int не возвращает, а вместо него предательский float возвращает и некоторых случаях получается вот такая шляпа получается тогда - PHP Fatal error: Uncaught TypeError: Return value
Sergey Romanenko
должно жеж быть что то вроде такого: return intval((int) $diff * 100 / $v);
Sergey Romanenko
я просто за основу своего класса для работы с цветами барл симоновский и только так решил у себя эту проблему https://github.com/termage/termage/blob/dev/src/Utils/Color.php#L336
Sergey Romanenko
Очень любопытно посмотреть на пример хорошей документации. Вас не затруднит ссылкой кинуть?
вот например то как должна выглядеть современная документация (а не просто тупой рестайлинг темы оформления) https://tailwindcss.com/docs https://statamic.dev/
Sergey Romanenko
есть поиск да и вообще какая нибудь логическая структура и навигация, а не просто ридми файл
Shokha
dd($request->files); приходить пустой когда метод PUT а когда POST все good! в чем может быть проблема?
Pavel
могу ошибаться, но мне кажется PUT не подходит для передачи файлов
Ismail
Hello
Ismail
i have a problem
Ismail
Need help
Katulos
do a barrel roll
Kirill
Hello Ismail. If you have certain question, write it without "hello, ihvae a problem"
Alexey Mishurovskiy
Всем привет. Как правильно орагнизовать слудующую историю: Например у нас есть некое количество типов писем в системе: Регистрация, восстановление пароля, и т.д. Соответственно отправляется асинхронно через messageBus Варианта реализации вижу несколько : Во всех вариантах есть сервис который занимается тем, что кладет в сообщение в очередь 1) Вызывем что-то типа EmailManager->sendRegistrationEmail(XXX) затем он кладет в очедерь полностью сформированное сообщение, которое отвечает только за рассылку сообщений о регистрации (sendRegistrationEmailMessage), затем хэндлер оборачивает его в шаблон и рассылает, 2) все то же самое, только хэндлер получает id юзера и уже все достает на своей стороне 3) вместо sendRegistrationEmailMessage делаем sendEmailMessage в котором указываем, например, класс, метод и параметры для обработки, Хэндлер ищет этот сервис, вызывает метод и передает туда параметры, то есть унифицируем асинхронную отправку писем. 4) ваш вариант. В каждом варианте есть свои + и - и не могу однозначно решить какой лучше испольховать
Alexander
Шаблон и данные для шаблона (private array $data) можно убрать в сообщение. Регистрация это, или напоминание что деньги не аккаунте заканчиваются - при таком подходе код хендлера будет один на все случаи.
Alexey Mishurovskiy
Alexey Mishurovskiy
в сообщение это получается пихать уже смысла нет, т.к. оно станет тяжелым
Alexey Mishurovskiy
Прошлый раз когда я делал очень мощную рассылку на очереях у меня передавался хэндлер, но тогда не было message bus и это было года 4 назад.. а тут погуглил и не нашел ничего. везде примеры и 1 типом сообщения. Ничего сложного и интересного в примерах нет
Alexey Mishurovskiy
то есть в моем понимании: 1 шаг : метод в сервисе, который формирует сообщение в шину (а он вообще нужен или сообщение в шину формировать прям где это нужно: контроллер, эвент, другой сервис) 2 шаг. понять единое сообщение на все письма, или на каждое отдельно 3 шаг - хендлер - единый хэнлер на все, или на каждое сообщение свой, действия выполнять прям в хэнжлере или вынести это так же в отдельный сервис, чтобы хэндлер был тонким
Alexey Mishurovskiy
Alexander
Типа того да
Alexander
Они же не завязаны на сообщение, т.е. не зависят от контекста
Alexey Mishurovskiy
ну это спорно
Alexander
Если они зависят от контекста, то контекст надо в дату положить и передать в шаблон :) Не говорю что это единственно верный способ.
Olga
ребят а что в пхп называют "пайкорн"
Юра
О сайт симфы обновился
Юра
Только заметил
Артем
Кто имел дело с league/oauth2-server-bundle? Помогите в нем разобраться
Артем
Я установил бандыл и выполнил базовою настройку и не понимаю что делать дальше
Артем
Использовать для безопасного доступа клиентов (web, мобильный клиент) к api
Dmitry
Использовать для безопасного доступа клиентов (web, мобильный клиент) к api
Этот бандл реализует протокол oAuth2 с JWT токенами компонентом oAuth2-server. Вы с самим протоколом ознакомились?
Артем
Да
Dmitry
Да
Тогда теперь сгенерируйте ему все нужные ключи как в примерах https://oauth2.thephpleague.com/installation/ и подключите их и маршруты https://github.com/thephpleague/oauth2-server-bundle/blob/master/docs/index.md
Dmitry
Потом сгенерируйте и примените его миграции и создайте клиентов в консоли как в https://github.com/thephpleague/oauth2-server-bundle/blob/master/docs/basic-setup.md
Артем
Это я уже выполнил
Dmitry
Это я уже выполнил
Значит теперь надо пробовать редиректить на /authorize и получать токены через /token с фронтенда или мобильного приложения
Артем
Понятно
Артем
На эндпоинте`/authorize` пишет { "error": "invalid_client", "error_description": "Client authentication failed", "message": "Client authentication failed" }
Dmitry
На эндпоинте`/authorize` пишет { "error": "invalid_client", "error_description": "Client authentication failed", "message": "Client authentication failed" }
Нужно в адресе передать client_id и остальные параметры для authorization code grant