Rodion
std::mechanicus
The Ant
Проблема чот возникла.
Роут с консоли матчит. с веб реквеста не матчит (постман).
Запускается вебка через симлинку (индекс.пхп). Соответственно документ рут не тот, в котором лежат исходники.
В этом может быть проблема? Или в чем тогда может?
🦔
The Ant
нету тулбара, апишка
The Ant
я не ставил
🦔
🦔
The Ant
да
Konstantine
Всем привет, ребят, отревьювте плиз вот этот PR:
https://github.com/symfony/symfony/pull/42125
Иван
в ParameterBag и так константы с палкой
Иван
ну и главное, ты убрал встроенную типизацию string с метода has, но сделал это без уважения, ты даже не поставил аннотации, что это теперь string[]
Ivan
Всем привет! У кого есть есть опыт локализации страниц ошибок? Работаю с Symfony 5.3.
locale автоматически проставляется по URL. Но вот если это страница ошибки, то этот механизм не срабатывает.
Текст самой страницы ошибки я в принципе могу локализовать ifaми внутри самой страницы,
но сами страницы используют layout всего сайта, и там перевод идет по локали по-умолчанию.
Кто-нибудь сталкивался с этим?
Иван
Иван
404, например - это ж сабреквест
и там по стеку реквеста должен быть более верхний доступен, откуда можно извлечь локаль
Denis
Привет
Подскажите, на сколько правильно использовать сервисы в Symfony одновременно и как сервис и как объект DTO ?
Либо лучше данные хранить где-то в отдельном DTO ?
В коде ниже в сервис postingService передается $id, который там сохраняется и используется при вызове других методов сервиса
И на выходе используются результирующие свойства сервиса (postingLength) для других операций в классе
Class StorePostingExporter
{
public function __construct(PostingService $postingService)
{
$this->postingService = $postingService;
}
public function export(string $id)
{
$this->postingService->validate($postingId);
$this->postingService->prepareDataForPostingExport();
if ($this->postingService->postingLength > 100) {
...
}
}
}
Иван
Denis
Иван
а то представь, ты устанавливаешь параметр сервису А, работаешь, потом обращаешься к другому сервису В, он работает с этим же сервисом А, меняет параметр на свой и ты в неопределённости, какой параметр там остался
Alexander
$this->postingService->getPostingLength($postingId);
Alexander
if ($this->postingService->getPostingLength($postingId) > 100) {
Denis
Alexander
Данные в сервисе могут кешироваться, но в массиве по id
Иван
Alexander
А лучше вообще кешировать повыше уровнем )
Alexander
Вполне, достаточно prepareData... Заставить возвращать dto
Denis
Ясно, спасибо всем!
Юра
Блин кто-то сталкивался с таким дерьмом в апи платформ?
https://github.com/api-platform/api-platform/issues/1971
Юра
Типо если ты сабмитишь энтити A и у неё есть OneToMany на энтити B то в процессе десериализации энтити В, оно по обратному рилейшену ManyToOne снова достает энтити A и перезаписывает его изменения которые уже были десериазилованы
Иван
понаставят апиплатформ, а потом энтити десериализируются
Alexey Mishurovskiy
Юра
Да там какое-то странное стечение обстоятельств которое приводит к этому
Юра
Вообщем дебажил дебажил нашел место где происходит замена объекта, но почему это происходит не понял
Иван
Юра
Это точно
Alexey Mishurovskiy
Ну я кстати так и не понял прелести апи платформы
Alexey Mishurovskiy
Обычного компонента сериалайзера вполне достаточно для апишек, ну может где то надо будет чуть больше поработать, но при этом нет головняка, если что-то в бандле не так
Иван
Иван
Alexey Mishurovskiy
Иван
ну это очевидный первый шаг
дальше надо разобраться, какие данные из базы берутся и в какой формат конвертятся
если там сериализатор, то насколько это очевидно?
Alexey Mishurovskiy
Ну я всегда стараюсь не усложнять если в этом нет необходимости. это ты к тому, что апи платформа стандартизована ?
Иван
я тут подумал, что в моей архитектуре неочевидности есть
Иван
Alexey Mishurovskiy
неочевидности есть всегда. в любой системе, не только в программировании. вопрос в другом насколько зашкаливает их абсурдность.
Юра
я вообще пришел к тому что надо как-то ограничивать уровень абстракций
Юра
только вот сложно это понятие измерить
Юра
каждая абстракция над абстракцией на порядок увеличивает сложность проекта
Alexander
Иван
там приведение типов
Иван
и надо помнить, что '0' - это в пыхе ложь, а в яваскрипте - истина
Alexander
В чем выигрыш по сравнению с сериалайзером и группами сериализации?
Maks
Alexander
wat?
всё в порядке, расходимся
Иван
wat?
если проебать каст в бул, может интересно получиться
Юра
Кто так кастит
Maks
https://www.youtube.com/watch?v=et8xNAc2ic8
Maks
это была отсылка к этому докладу
Юра
Пиши !!'0'
Alexander
Тема с дто для чтения не раскрыта
Alexander
В том же проекте на запись дто выглядят отлично - запихал в них любую гадость, провалидировал и доволен. А в сущностях строгие типы и строгие проверки которые сыпят эксепшены из сеттеров.
Но зачем делать 20 дтошек на чтение, если можно группы сериализации на сущности проставить?
A
Как небольшой плюс НЕ использования DTO - проще добавлять новые свойства. Не нужно править в нескольких местах, если весь массив из БД сериализуется.
Alexander
Ну да, и логика нормализации в одном месте - в нормалайзере. Если апи развесистое дто для чтения будет не один а миллион, и в каждом конструкторе будет дублирование.
Непонятно.
Юра
Слой дто дает слой абстракции от уровня хранения. Но так как в обычных проектах уровень хранения с 99.99 вероятностью не будет меняться то ну ты понял
artem
всем привет) а кто юзал крайнюю версию пхп шторм, как там отключить индексацию вендоров? заодно мб у кого есть плагин под 2ю симфу?
Alexander
Alexander
Плагин в маркетплейсе symfony support. Его в настройках надо для проекта включить.
Иван
Alexander
Привет, есть вопрос по LexikJWTAuthenticationBundle. Я запустил команду lexik:jwt:generate-keypair и он создал два ключа, но кинул их в игнор. Это меня и ввело в ступор. Должен я пушить эти ключи или нет? У нас все запущено в докере в тесте и, получается, я должен добавить эту команду в докерфайл, чтобы он после каждого пайплайна в гите генерировал новый ключ или как? Может, есть какой-то флажок типа —if-not-exist?
Юра
Ты можешь сгенерить разные ключи для разных енвов
Юра
В бандле есть настройка где ключи
Юра
Продовские лучше в репе не хранить наверное
Alexander
Окей
Alexander
Спасибо
Dmitry