The Ant
The Ant
Почему симфа не прокидывает локаль в эксепшоны? как фиксить?
Павел
Vlad
в джсоне рендеришь?
Vlad
ну поправь шаблон и усе
Vlad
будут переводы тебе
Павел
The Ant
я кастом сделал ) всё по ману. Но в шаблоне нет переводов
Vlad
как это нет?
Vlad
https://symfony.com/doc/current/translation.html#translations-in-templates
The Ant
ну вот так. рендерится шаблон с дефолтной локалью, пох че там указано
Vlad
все там есть мурваьевский
The Ant
из-за этого интерфейс отображается на дефолтном языке.
я конешь пофиксил кукой, и начал проверять куку в ивенте, выставлять нужную локаль, но не хочу этот костыль
The Ant
Павел
The Ant
всмысле редиректить на 404 или 403? )
Vlad
The Ant
я устал :( хочется фикс.
есть конешь решение
это ивент отменить, который выставляет дефолт локаль. Но я не нашел как отменить системный ивент...
Иван
Павел
Павел
А вообще доступны /{locale}/404.html ?
Andrew
вот ты спросил чат гопоту и чо?
В каком смысле "и чо"? Он мне дал решение, в сообщении дальше оно описано. В конечном итоге я вообще решил каким то обобщённым путём, учитывая подсказки участников чата
Иван
Andrew
Я больше скажу, у меня была своя теория, я ещё и гуглил. Что плохого в том, чтобы брать информацию в разных источниках и принимать решение на основе всего полученного опыта?
Иван
Иван
Павел
я не делал отдельную страницу 404, рендерится эксепшон на том же урле
Я имею ввиду, они вообще доступны или нет. Получается сейчас проблема, что 404 всегда на одном урле с дефолтным языком.
Если поставить другой язык в урл (просто руками), что то изменится? Если страница не переведется, то урлы там не подтягиваюстя и видимо твой вариант , хоть и костыль, но судя по всему решение норм , иного просто не документировано
The Ant
а вообще можно подменить стандартные ивенты которые кернел бросает?
(лол почему их два)
The Ant
The Ant
короче пора заводить хдебаг сука... 🤬
Dmitry
Dima
Может кто сталкивался - symfony в контейнере, кеш в папке /var, в dev происходит следеющее:
При создании TwigFunction ее поведение не меняется до момента, когда контейнер остановлен и заново запущен, например public function getPhone()
{
return '+74957777777';
} будет выводится всегда 74957777777 даже если я изменю это значение, почищу кеш (руками или через консоль), один хер будет 74957777777. Как я понял это проблема docker, но решения не нашел.
P.S. Делал отдельный volume на /var, все едино, поведение такое же. Изменение файлов шаблонов и кода срабатывает нормально, такой баг только для TwigFunction
Павел
Может кто сталкивался - symfony в контейнере, кеш в папке /var, в dev происходит следеющее:
При создании TwigFunction ее поведение не меняется до момента, когда контейнер остановлен и заново запущен, например public function getPhone()
{
return '+74957777777';
} будет выводится всегда 74957777777 даже если я изменю это значение, почищу кеш (руками или через консоль), один хер будет 74957777777. Как я понял это проблема docker, но решения не нашел.
P.S. Делал отдельный volume на /var, все едино, поведение такое же. Изменение файлов шаблонов и кода срабатывает нормально, такой баг только для TwigFunction
Ну докер не может запоминать что то из симфни, твига, из кода. Ищите решение внутри приложения. Может какой то кэш еще, может просто что перепутали. Запускайте xdebug и посмотрите что он покажет, может вооще туда не заходит
Павел
Может опкэш какой
Dima
Может опкэш какой
Дай я тебя расцелую!!! Опкеш на деве включил по глупости малолетней
Михаил
Стоп, опкеш запоминает результат функций которые возвращают константное значение? Зачем?
Vlad
Так это база. Если обновление opcache выключено, конечно будет всегда один результат
Павел
Vlad
Поди opcache.validate_timestamps=0
установлен
Dima
Было так [opcache]
opcache.enable=1
opcache.revalidate_freq=0
opcache.validate_timestamps=0
opcache.max_accelerated_files=10000
opcache.memory_consumption=192
opcache.max_wasted_percentage=10
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1
Dima
наверно поэтому он и называется **оп**кеш
Павел
Павел
Но посути мы ему имено коды и файлы скармливаем
Павел
Поэтому логично что он именно код запоминает, что бы его не интерпретировать каждый раз
Михаил
Павел
Уже готовый лежит, готовый к исполнению
Павел
У нас же php code -> opcode, при каждом вызове скрипта. А при кэшировании, сразу op code файла.
Павел
Ну вроде)))
Михаил
То есть если я использую демонизацию процессов - то опкеш бесполезен?
Михаил
Виктор
Привет! Изучаю Symfony, делаю первый проект. Не могу разобраться с Doctrine. Допустим, у меня есть сущность Comment. Каким образом мне связать её с несколькими другими сущностями? Комментарий можно оставить как в фотоальбоме (Album), так и в фотографии (Photo) или статье (Text). Есть ли какая-то возможность сделать OneToOne в рамках свойства parent комментария, или мне вообще нужны отдельные CommentAlbum, CommentPhoto, CommentText?
Юра
Виктор
Если я правильно понимаю, речь идёт об этом? https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html
Виктор
То есть у меня будет класс Comment с общими для всех комментариев полями, а от него уже будут наследовать AlbumComment, PhotoComment, TextComment и т.д. И у каждого из них будет поле parent, привязанное к соответствующей сущности (Album, Photo, Text). Верно? Насколько я понял, есть несколько вариантов это реализовать (подробно в доку выше ещё не вникал, только нашёл)?Есть ли какой-то проект, где бы можно было увидеть такую реализацию связей? Мне пока не удалось найти на github(
Виктор
Вот такой пример нашёл. Это вообще нормальная реализация? https://www.inanzzz.com/index.php/post/e0ln/using-doctrine-entity-inheritance-mapping-in-symfony
Виктор
То есть получается, что репозиторий у нас для всех наследников один? И возвращаемый тип будет Comment, а фактический тип будет определяться исходя их этого:
@ORM\DiscriminatorMap({
"album"=AlbumComment::class,
"photo"=PhotoComment::class,
"text"=TextComment::class
})
То есть я запрашиваю, допустим, по id комментарий. И в момент создания объекта репозиторий по дискриминатору определяет, какой именно класс для этого использовать.
А если мне нужно получить, например, все комментарии для альбома с id 3? Мне нужно сделать так?
$q->andWhere('discriminator = :discriminator')
->setParameter('discriminator', 'album')
->andWhere('parent = :parent')
->setParameter('parent', 3)
Если да, то как тогда грамотно сделать методы для получения комментариев с различными родителями? Кажется, будто бы делать это в одном репозитории, а тем более методе - неправильно... Или это нормально, и контроллер просто должен передавать в метод репозитория тип комментария? Типа:
// метод репозитория
public function getCommentsByParentId(int $parentId, string $parentEntityType) { ... }
// и где-то в контроллере
$commentRepository->getCommentsByParentId(3, 'album');
Павел
То есть получается, что репозиторий у нас для всех наследников один? И возвращаемый тип будет Comment, а фактический тип будет определяться исходя их этого:
@ORM\DiscriminatorMap({
"album"=AlbumComment::class,
"photo"=PhotoComment::class,
"text"=TextComment::class
})
То есть я запрашиваю, допустим, по id комментарий. И в момент создания объекта репозиторий по дискриминатору определяет, какой именно класс для этого использовать.
А если мне нужно получить, например, все комментарии для альбома с id 3? Мне нужно сделать так?
$q->andWhere('discriminator = :discriminator')
->setParameter('discriminator', 'album')
->andWhere('parent = :parent')
->setParameter('parent', 3)
Если да, то как тогда грамотно сделать методы для получения комментариев с различными родителями? Кажется, будто бы делать это в одном репозитории, а тем более методе - неправильно... Или это нормально, и контроллер просто должен передавать в метод репозитория тип комментария? Типа:
// метод репозитория
public function getCommentsByParentId(int $parentId, string $parentEntityType) { ... }
// и где-то в контроллере
$commentRepository->getCommentsByParentId(3, 'album');
Сделайте мэни-ту-мэни с разными сущностями или полморфные связи, или вообще раздельные комментарии . Просто угрязнете в этом всём, уже угрязли. Тем более что новичок. Дескреминаторы и так спорное решение, и тем более когда не прошарен
Виктор
Павел, так а полиморфные связи - это разве не название того, о чём я написал? Вот это оно? https://stackoverflow.com/questions/22488990/polymorphic-relationship-in-doctrine-2
Павел
Павел
Дескриминаторы - это про другое
Виктор
А можно пример, как это примерно выглядеть будет?
Павел
Пример, это когда соединительная таблица не из 2 столбцов comment_id entity_id а из 3 comment_id entity_type enityt_id
Павел
Но опять же проще сделать просто тогда разные мэни ту мэни
Павел
Ну и связи делать не обязательно
Павел
Можете сделать просто many_to_one
Павел
Comment с полями entity_type entity_id
Павел
Т.е. просто id, а не связь
Виктор
Эм, но это же как-то костыльно, не? Тут вопрос в первую очередь в том, как это правильно делается на большом проекте - я же научиться хочу) Или так и делается на практике?
Павел
Алексей
Павел
Типа как, чтобы создать объект обезьяны, надо создать луну
Павел
У вас вообще крудиловка