Сергей
мануально?
artem
ладно, я тупой) поставил так brew install php-cs-fixer
artem
composer require php-cs-fixer
еще есть идеи?
Vite4eg
Ты объясни, откуда у тебя вообще эта ошибка? Тебе всё-таки этот пакет нужен или нет?
Сергей
вопрос в чем? как поставиь пакет с помощью composer ?
Vite4eg
А то говоришь, что запускаешь псалм, а потом спрашиваешь, почему ругается на php-cs-fixer
Vite4eg
Это два разных пакета
artem
Vite4eg
А в списке зависимостей этого пакета нет? посмотри в composer.json
Vite4eg
artem
Vite4eg
А кто хук прописал? Ты сам?
artem
#!/bin/bash
set -eE
bash $(pwd)/.githooks/support/init-hooks.sh
bash .githooks/support/psalm/run-psalm.sh
bash .githooks/support/fixer/run-fixer.sh --dry-run
Vite4eg
Что прописано в run-fixer.sh?
artem
function errMessage() {
printf "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n${NC}" >>/dev/stderr
printf "${RED}You have to fix your code. See details ABOVE\n${NC}" >>/dev/stderr
printf "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n${NC}" >>/dev/stderr
printf "${NC}\n"
}
вот эта ебатня и срабатывает
Vite4eg
Там вроде из проекта срабатывает. Тогда
composer require friendsofphp/php-cs-fixer
Сергей
--dev тока добавить
Юра
Кто-то сталкивался с таким?
https://github.com/symfony/symfony/issues/48195
Kirill
Юра
Да там коде какой-то тупняк у них по-моему
Юра
Делается new на юникод символе каком-то. Вообще не понимаю что это и зачем
Юра
https://github.com/symfony/cache/blob/6.1/CacheItem.php#L186
Kirill
А, всё, да
Kirill
увидел ссылку на код
Kirill
тогда нет, не опкеш, а у них хрень какая-то
Юра
Причем это приватный метод pack
Юра
И вызова в самом классе нет
Юра
Но он вызывается из другого месте
Юра
Как)
Sergey
Доброго времени суток.
Есть ли в симфе/твиге способ объединения ресурсов (css/js) загружаемых на странице в один файл?
Насколько я понимаю сейчас есть только вариант через вебпак обёртку с долгим и нудным перечислением скриптов для последующей ручной компиляции
Kirill
Sergey
там энкор идёт почти из коробки, не?
да, это как раз то о чем я писал.
Насколько я понимаю, необходимо описывать entry для каждой страницы вручную, (если мы говорим о том, что на каждой странице разные скрипты)
Это решение показалось мне слишком громоздким и я засомневался, что двигаюсь в правильном направлении
Kirill
ну зависит от реализации
Kirill
в пыхе ты тоже можешь каждую страницу отдельным скриптом описывать
Sergey
само собой. Просто я интересуюсь есть ли какое-то решение аналогичное подходу битрикса (да простят меня обитатели чата)
Sergey
Т.е. перечисляются ассеты и потом они просто выводятся одним файлом в header
Сергей
Ну импортни всё в один файл и все
Sergey
да ладно, я понял, что чудес не бывает и надо пострадать, чтобы было хорошо)
Сергей
Не понял) то ты хочешь в один файл всё, то нет)
Юра
Привет полуношники
Юра
Я пытался найти в доктрине функионал и в итоге пришлось запилить самому. Короче в чем суть. Есть наследование энтитией и надо выбрать только определенного типа
Юра
Вот рабочий вариант с моим патчем доктрины. Возможно это можно сделать по другому поправьте может я туплю
Юра
Юра
OF TYPE выбирает только этот тип, без наследников
Миша
Странное дело: в доках к моей SonataMedia 3.28.0 https://docs.sonata-project.org/projects/SonataMediaBundle/en/3.x/reference/helpers/ сказано что есть твиг-функция:
{{ sonata_thumbnail(media, 'small') }}
для то ли генерации эскизов, то ли просто рендеринга элементов с ними, но суть в том что если я пытаюсь её использовать в шаблоне, симфони ругается на отсутствие такой функции:
Unknown "sonata_thumbnail" function.
Перечитал процесс установки и настройки SonataMediaBundle - там никакого намёка на то, что поддержку thumbnails нужно как-то отдельно устанавливать в виде отдельного расширения.
Зато обнаружил что есть тэг thumbnail... Косяк в документации что ли.
Andrii
да, это как раз то о чем я писал.
Насколько я понимаю, необходимо описывать entry для каждой страницы вручную, (если мы говорим о том, что на каждой странице разные скрипты)
Это решение показалось мне слишком громоздким и я засомневался, что двигаюсь в правильном направлении
Можно конфиге webpack написать ручками функцию, которая вернёт список файлов, которые лежат где-то, например, в assets/js/pages/. Далее делаем forEach(f=>conf.addEntity(f.name, f.path)
После в твиге используте f.name, чтобы подключить нужный набор
Вариант 2 использовать lazy import и держать все в одном файле, а в самом js уже решать на какой странице какие компоненты грузить.
О плюсах и минусах подходов думайте сами
« перечислением ассетов, это не то что вам нужно. Webpack создаёт entrypoints, где идут списки того, что нужно для entity, что вы подключили. И вам надо сделать подключение частей в этих entity (есть методы, которые в twig возвращают эти списки. Надо только описать как и где оно подключается на странице )
Юра
Плюсаните если не жалко
https://github.com/doctrine/orm/issues/10226
Sergey
Можно конфиге webpack написать ручками функцию, которая вернёт список файлов, которые лежат где-то, например, в assets/js/pages/. Далее делаем forEach(f=>conf.addEntity(f.name, f.path)
После в твиге используте f.name, чтобы подключить нужный набор
Вариант 2 использовать lazy import и держать все в одном файле, а в самом js уже решать на какой странице какие компоненты грузить.
О плюсах и минусах подходов думайте сами
« перечислением ассетов, это не то что вам нужно. Webpack создаёт entrypoints, где идут списки того, что нужно для entity, что вы подключили. И вам надо сделать подключение частей в этих entity (есть методы, которые в twig возвращают эти списки. Надо только описать как и где оно подключается на странице )
Спасибо за подробный ответ:)
Миша
Привет! Задался вот вопросом: как назвать метод, который наполняет свойство-массив данными, но при этом не имеет аргументов.
Вроде как обычным setProperty язык не поворачивается назвать, потому что аргумент не передаётся.
Может populateProperty?
Kirill
initProperty
Миша
Кто нибудь знает как в доктрине сделать запрос где подзапрос в from?
Чтобы вот такую конструкцию замутить:
SELECT
count(DISTINCT table1.id),
count(DISTINCT table2.id)
FROM
(SELECT 1) allways_not_empty_table
left join table1 ON table1.field1 = 'someA'
left join table2 ON table2.field2 = 'someB';
Не могу придумать других способов получить список количесств строк из разных не связанных таблиц. Если не делать FROM (SELECT 1) а делать SELECT FROM (someTable) то если в someTable не будет записей то запрос всегда нули будет возвращать.
Viktor
Миша
Посмотрите ответ ниже на схожий вопрос
Понятно, всё плохо. Ладно, наверное лучше подберу таблицу которая никогда не пустеет и буду её в from кидать, как бы бредово это не смотрелось. Рефакторинга ради...
Павел
Юра
Юра
Есть сабселект
Юра
Смотри dql там есть описание парсера
Kirill
Всем привет! Подскажите, должен ли репозиторий (в широком смысле) содержать метод save? Вроде бы не должен и это не его зона ответственности, но вот разворачивал проект на TypeScript, там аналог доктрины TypeOrm и повсюду репозиторий имеет метод save
Null
В доктрине не те репозитории, которые ты ищешь.
Павел
Всем привет! Подскажите, должен ли репозиторий (в широком смысле) содержать метод save? Вроде бы не должен и это не его зона ответственности, но вот разворачивал проект на TypeScript, там аналог доктрины TypeOrm и повсюду репозиторий имеет метод save
По разному делают. Например у нас есть ссылка на первоначальный объект в репо, а точнее глубоко под капотом единого IdentityMap и UoW. Это нам позволяет делать флаш вне репозитория. Если бы этого не было, пришлось делать внутри save. Опять таки, наш флаш он глобальный, т.е. метод save сохранит все объекты, а не только которые относятся к репо.
С другой стороны, почему мы должны в проекте и бизнесе привязываться к доктрине и UoW? Например мы заменили на свою реализацию, где нормальный UoW на один агрегат а не глобал транзакция. Теперь нет смысла в каком то отдельном флаше. Или вообще отказались от UoW.
Короче немного холиварненько
Павел
Ну еще можно к этой идее подходить как что репозиторий - коллекция, а flush - сброс на диск, не в рамках доктрины, а в целом:) Типа репо - это в оперативке, а флаш - сбрасывает на жесткий диск.
Юра
У uw не хватает какой-то концепции Аля скоупы или что-то такое
Юра
Чтобы можно было какието managed scope создавать
Юра
И флашились изменения только там. Но это наверное сильно усложняет
Миша
Мне нужен подзапрос в From. Если посмотреть в том же мане в разделе Clauses, то там будет вот что:
FromClause ::= "FROM" IdentificationVariableDeclaration {"," IdentificationVariableDeclaration}*
SubselectFromClause ::= "FROM" SubselectIdentificationVariableDeclaration {"," SubselectIdentificationVariableDeclaration}*
То есть как я понял это значит, что в FROM он ожидает увидеть только идентификатор и ничто другое. Мне же нужно туда запихнуть SelectClause.
Впринципе в пользу того что в FROM нельзя делать подзапрос и issue на GitHub говорит: https://github.com/doctrine/orm/issues/3542
Vlad
да че вы дрочитесь с этим dql, чистый скуль+resultSetMapping
Юра
Делай через dbal квери билдер
Юра
А не dql квери билдер
Shokha
Добрый день, вопрос не совсем по Symfony.
Нужен совет про архитектура база данных.
У меня проект типа интернет магазин.
Там есть 4 вида пользователей:
1) Admin
2) Seller
3) Customer
4) Сourier
Admin и Seller зайдет с логин и паролем на сайт через браузер!
У Customer и Сourier через accessToken, у них не будет логин пароль. они получить токен по подтверждения номер телефона.
Eсть 2-3 таблица который может сделать изменения любой пользователь.
Как быть в таком случае?
У меня сейчас идея создать главную таблицу
Identity там хранить логин, пароль, токен, номер телефона и роль(ROLE_ADMIN, ROLE_CUSTOMER и.т.д)
и еще 4 таблица
1) Admins
2) Sellers
3) Customers
4) Сouriers
связь один к одному к таблицу Identity
Денис
Добрый день, вопрос не совсем по Symfony.
Нужен совет про архитектура база данных.
У меня проект типа интернет магазин.
Там есть 4 вида пользователей:
1) Admin
2) Seller
3) Customer
4) Сourier
Admin и Seller зайдет с логин и паролем на сайт через браузер!
У Customer и Сourier через accessToken, у них не будет логин пароль. они получить токен по подтверждения номер телефона.
Eсть 2-3 таблица который может сделать изменения любой пользователь.
Как быть в таком случае?
У меня сейчас идея создать главную таблицу
Identity там хранить логин, пароль, токен, номер телефона и роль(ROLE_ADMIN, ROLE_CUSTOMER и.т.д)
и еще 4 таблица
1) Admins
2) Sellers
3) Customers
4) Сouriers
связь один к одному к таблицу Identity
Можно сделать разные таблицы для обычных юзеров с логином паролем и для пользователей апи. И уже кастомные аутентификаторы, которые эти вопросы будут разруливать.
По твоему варианту - я бы не стал создавать разные таблицы на каждую роль. Можно хранить всех в одной и вынести токен в отдельную таблицу, так как токенов у юзера может быть несколько, если он с разных устройств заходит. И у юзера апи будут поля с логином и паролем, но, предположим, пустые.
Thawne
Всем привет, хотел спросить, getResult() должен выдавать join? Когда делаю getArrayResult() то все нормально, но через getResult() join просто игнорируется…
Null
а как ты понял, что он игнорируется?
Thawne
ну не игнорируется, а он просто не ”приходит”
Thawne
Thawne
Thawne
1 - это getResult()
2 - getArrayResult()