Konstantin
что, наверное, не супер-хорошо
Юра
Выучился долго да. Но зато потом ты подходишь к человеку, и знаешь что печень у него не переехала, сердце там же стопудов
Юра
И работаешь себе поаышаешь скил
Юра
А в айти блин на месте топчешсч
Gleb
а фигач библиотеки, но они не автоконфигурируемы... и так далее)
Юра
И вообще уже модно spa, и лучше вообще на го, и в кубернейтс обязательно
Юра
А пока учишь го, он обновится и похерит все
Юра
)
Юра
Поэтому наверное мне нравится так смотреть на горы
Юра
Они стоят веками
Юра
Не меняются
Gleb
Поэтому наверное мне нравится так смотреть на горы
я когда домой с работы еду, почти каждый день ими любуюсь)
Gleb
Да, спасибо. Мне всё равно ещё надо будет раскуривать отличие одного от другого.
Anton
Про атрибуты кстати вопрос: почему в симфони (в интеграции с твигом) нет атрибутов, которые можно было бы накидывать для функций чтобы расширять твиг?
Anton
Надеюсь понятно написал (
Konstantin
я думаю написать их - дело 10 минут, только не совсем понимаю зачем. предлагаете завести огромный класс TemplateHelper с кучей статических методов, на каждом из которых будет атрибут, прокидывающий эти функции в твиг?
Konstantin
по мне это скорее говнокод - всякие *Utils, *Helpers. конкретное расширение твига должно делать конкретную работу, а не просто "а давайте метод doXxx сервиса Yyyy прокинем в твиг как фильтр xxx"
Konstantin
но если хотите, напишу вам такое минут за 15, чисто ради спортивного интереса 🙂 там будет ряд корнер-кейсов, но как-то работать должно
Konstantin
как минимум с сервис-алиасами работать не будет (если у одного класса есть несколько сервисов в одном контейнере)
Konstantin
да, показания расходятся, то 10 минут, то 15 🙂
Павел
твиг вообще живая тема?)) когда мне присылают тестовые с фулстеком на симфони я отказываюсь сразу))
Павел
потому что лень вникать в этот ваш дурацкий твиг)
Konstantin
наличие твига != фуллстек ведь. у меня, например, сидит десяток людей чисто на твиге, в пхп они не лезут, и пхп не лезет к ним, кроме сложных случаев
Павел
наличие твига != фуллстек ведь. у меня, например, сидит десяток людей чисто на твиге, в пхп они не лезут, и пхп не лезет к ним, кроме сложных случаев
ну фулстек наверно тут для красного слова) когда говорят сделать простенькую админку на симфони с твигом)
Konstantin
потому что лень вникать в этот ваш дурацкий твиг)
а вот это уже так себе подход. прямо сейчас, наверное, и не надо вникать. но легко себе представить ситуацию, когда 10 лет симфони за плечами, пора идти кем-то командовать или руководить, а техлид не знает как верстальщикам помочь этот твиг настроить. я считаю, что знаний лишних не бывает, хотя бы чисто в обзорном формате надо понимать что где происходит
Павел
спасибо убедил, я вроде на вопросе с отправкой формдата загасился плюнул и забил)
Konstantin
твиг довольно мощная штука. на нем, например, можно наворотить неплохую автоматизацию емейл-рассылок для контент-отдела, кодгены всякие для самих себя, действительно админки всякие. это не значит, что надо сидеть руками верстать, но понимать что он умеет и как готовить - никогда лишним не будет
Павел
а туда как jquery затащить, если можно?
Konstantin
это ортогональные вещи. твиг - это генерация хтмл (не считая извращений), жквери накладывается на уже готовый хтмл, который неважно как получили
Павел
понимания тогда нет, как jq заставить работать
Konstantin
да блин. как вы это делаете с вордпрессом каким?
Павел
не сыпь мне соль на рану))меня из студии уволили за то что не вкурил вордпресс)
Konstantin
у вас сервер сгенерил хтмл, в этом хтмле сверху (или сниху, если модно) есть два тэга скрипт: у одного срц ведет на дистрибутив жквери, другой - на ваш код. ну где вы там пишете $('.foo').click(...)
Konstantin
либо на один собранный бандл, если совсем правильно всё делать, но не суть. суть в том, что есть сервер, который хтмл сделал, а есть клиентский жс, который на этот хтмл добавил интерактива
Павел
вроде понял, надо поупражняться
Павел
то есть твиг условно разбивает на компоненты хедера и футера и там прописать тег скрипт и свой jq, вот так понял
Gleb
то есть твиг условно разбивает на компоненты хедера и футера и там прописать тег скрипт и свой jq, вот так понял
Твиг не разбивает на компоненты сам, но это легко делать там, аля блейд, только php код в шаблон затащить нельзя. И да, там есть зона скриптов, можно расширять во вложенных шаблонах её.
Павел
ну да, не правильно выразился, мы разбиваем на компаненты
Anton
Тупо быстро и удобно же)
Алексей
добрый день, понимаю что вы здесь о высоком беседуете, но такая проблема с sonata admin: есть страница в админке "экскурсии" у каждой экскурсии есть маршрут из точек. проблема в том, что по роуту /impression/1/impression_route отображаются все точки ВСЕХ маршрутов. Не могу найти как сделать привязку только к определённому. это отдельная таблица и в ней есть impressionID p.s. на проекте симфони 2.8 :(
Konstantin
ух)
Алексей
да хотя б куда копать :)
Konstantin
в доку сонаты, куда)
Алексей
=)
Юра
Копать в сторону другой работы куда-то
Юра
Долдна быть возможность модифицировать квери билдер
Юра
Читай доку
Gleb
Вопрос может быть не столько к симфе, сколько к хорошим практикам. Во фреймворках периодически можно создавать классы с __invoke() методом. Насколько это пагубная/допустимая практика? Понятно что есть случаи когда другого варианта нет, например, когда строишь пайплайн через thephpleague/pipeline, но когда есть вариант сделать так, или более явно - что лучше?
Konstantin
хороший вопрос, на самом деле. например я (тут нет единственно верного ответа, поэтому поделюсь своими соображениями) предпочитаю явное неявному. мне хочется чтобы инстансы классов вели себя как инстансы классов, а не функции, строки, массивы или что-то ещё. мне хочется по cmd + click провалиться в реализацию (или хотя бы в интерфейс) метода, и посмотреть что там внутри. а не гадать "абажжи ёбана, это у нас функция, но не функция, значит там инвоук есть, пойду искать". сходу не могу придумать ни одного примера, где __invoke лучше чем прямой вызов метода с названием типа apply(), может кто-то расскажет, но мне ни разу не приходилось так делать
Konstantin
другое дело что я не большой любитель околофункционального кода (замыкания, частичное применение, апп. функторы итд итп) в пхп, наверное поэтому мне не нравится
Gleb
другое дело что я не большой любитель околофункционального кода (замыкания, частичное применение, апп. функторы итд итп) в пхп, наверное поэтому мне не нравится
Спасибо за мнение, просто на сколько я помню та же симфа позволяет делать __invoke() методы и в yaml описании роутов использовать только имя сервиса из-за этого, вместо полного класс и метод. ПС: таков был проект, что роуты описывались в ямле.
Konstantin
да позволяет, конечно, получится один экшн на один класс ~очень удобно~. я не вижу этому применения
Юра
За это руби помню возненавидел
Юра
Когда неявности столькоьчто невозможно понять что откуда пришло что есть что и что можно делать вообще
Юра
Читать такой код очень неприятно
Konstantin
вдобавок куча методов на прототипе сверху накинута (как в жсе в 2010) - типа 1.foo
Юра
Чисто чтобы сказать смотрите какие мы крутые в одну строку запихнули столько всего. Только такой код редко когда бывает понятным
Алексей
Копать в сторону другой работы куда-то
сюда и прикопал и обалдел ))
Алексей
Долдна быть возможность модифицировать квери билдер
умом понимаю что под капотом происходит и как исправить, но хз де это тут найти. Но в общем спасибо )
Nikolay
умом понимаю что под капотом происходит и как исправить, но хз де это тут найти. Но в общем спасибо )
protected function configureQuery(ProxyQueryInterface $query): ProxyQueryInterface { $query->addSelect('account') ->leftJoin('o.account', 'account') ; return $query; } Может вот это (у AbstractAdmin смотри метод configureQuery)
Алексей
Где там?
в классе для настройки роута и crud сонаты , в пастабин сбросил код
Nikolay
в классе для настройки роута и crud сонаты , в пастабин сбросил код
У дочернего класса тоже нет ничего похожего?
The Ant
хороший вопрос, на самом деле. например я (тут нет единственно верного ответа, поэтому поделюсь своими соображениями) предпочитаю явное неявному. мне хочется чтобы инстансы классов вели себя как инстансы классов, а не функции, строки, массивы или что-то ещё. мне хочется по cmd + click провалиться в реализацию (или хотя бы в интерфейс) метода, и посмотреть что там внутри. а не гадать "абажжи ёбана, это у нас функция, но не функция, значит там инвоук есть, пойду искать". сходу не могу придумать ни одного примера, где __invoke лучше чем прямой вызов метода с названием типа apply(), может кто-то расскажет, но мне ни разу не приходилось так делать
Зачем придумывать один единственный метод, когда можно вообще без метода публичного? Ну и учитывая что инвок это коллабл, для всяких хендлеров по типу ивентовых самое оно. Где может и функция быть вполне.
The Ant
А ещё контроллеры удобны в симфе, с инвоком вместо кучи методов с экшонами.
The Ant
Что-то типа, ага.
The Ant
доктрина умеет автоматом вычислять дифф для may-to-many? чтоб не удаляло всё, а потом вставляло новые значения. Надо удаление отдельно, вставку новых отдельно.
The Ant
я чот заебался делать это вручную. Вроде в uow есть диффы для коллекций, но как они работают ваще хз. Не работает нифига
Павел
Плюсы конкретно в симфони - не надо дописывать __invoke или указание методов чтобы отправить в мессенджер, так как уже все на __invoke. Но есть и минусы, менеее удобно переходить + проблемы, когда такой класс в проперти. Надо или его предварительно в переменную пихать, или ->__invoke() что выглядит ущербненько
Павел
доктрина умеет автоматом вычислять дифф для may-to-many? чтоб не удаляло всё, а потом вставляло новые значения. Надо удаление отдельно, вставку новых отдельно.
Хорошая была бы фича) Но в большинстве случаев можно или забить хер, или тебе надо точно знать add или remove было, чтобы кинуть ивент или еще что-то.
Павел
Когда для ивента, когда надо оставить какие-то данные. Почти всегда короче )
А, ты прям хочешь diff, который тебе вернет что новое или что удалили? Я просто думал просто "set" но без херни с полным дропом