Юра
Он и обновить и удалить может
Юра
Это просто инкапсуляция кода с энтитями, чтобы можно было дергать откуда угодно
Юра
Некоторые на этом и останавливаются, а некоторые поверх еще делают сервисы
Юра
Я не любитель супер усложнять ибо потом когда возвращаешься к проекту который не видел пару месяцев, то матякаешь сам себя
Gleb
Aleksander
Gleb
Gleb
Он кстати скорее всего будет называться framework.php и лежать в самом ядре. Домой вернусь - поищу
Gleb
Именно его пока не нашёл.
Вот собственно подобные файлы из ядра
https://github.com/symfony/symfony/tree/6.1/src/Symfony/Bundle/FrameworkBundle/Resources/config
Gleb
Прочитал подробнее, это пример конфига, который надо класть в /config/packages.
Gleb
Gleb
Gleb
В бандле такое делается через такой же конфиг для бандла, и его инклюд через dependencyInjection бандла.
Руслан 🇲🇨
Здравствуйте!
При попытке выполнить запрос:
$query = $entityManager->createQuery(
'SELECT partial u.{name}
FROM App\Entity\Product u'
);
Получаю ошибку:
[Semantical Error] line 0, col 22 near '}
': Error: The partial field selection of class App\Entity\Product must contain the identifier.
Код модели:
https://pastebin.com/jePmEiZ3
Пожалуйста помогите.
Null
u.{id, name} - ошибка же написала. В запросе должен быть идентификатор сущности обязательно.
Руслан 🇲🇨
🙏
Kartulin
Привет.. Подскажите, есть какая возможность при создании джобы - проверять ее на уникальность? Типа "если в очереди уже есть такая джоба с уник. полем" - то не отсылать в очередь
Aleksander
спасибо! интересно, не знал.
однако всё равно не смог добить: класса Symfony\Config\FrameworkConfig как не было, так и нет, а если не указывать тип, то система не может определить какую зависимости надо: Could not resolve argument "$framework" .... You must typehint it....
Gleb
Aleksander
Gleb
Gleb
Gleb
Aleksander
Aleksander
в общем, врядли в этом дело(что всё на пхп должно быть), ибо в последнем примере import в yaml и он работает - пытается загрзуить указанный пхп-конфиг, но не может найти для него зависимости или же падает, если указать несуществующий класс
Юра
Потому что слишком много данных
Юра
Твой вардамп посылают тонну текста
Юра
Браузер виснет
Юра
Еще наверное xdebug не стоит
Юра
Который переопределяет вардамп и лимитирует количество данных
Руслан 🇲🇨
А как вывести массив без тонны текста?
Юра
Тонна текста не в массиве а в энтитях
Юра
Проставить xdebug
Юра
Или не впрдампить
Юра
А использовать дебагинг
Юра
Или завардампь count(products)
Юра
Такой вардамп может еще и фпм подвиснуть
Юра
Возможно прийдется сделать рестарт пхп фпм
Dmitriy
Попробуй dump()
Юра
Да еще вроде какой-то симфонийский dump есть
Руслан 🇲🇨
Александр II
console.CRITICAL: Error thrown while running command "'app:test' --env=dev". Message: "Command "app:test" is not defined. Did you mean this?
кэш командой чистил
руками команду запускаю - ок, по крону падает ошибка
создал тестовую команду (скопировал эту, и вместо кода вставил логгер и поменял название команды), она норм отрабатывает по крону
куда копать, подскажите?
Aleksander
Александр II
Нашел проблему, проблема в зависимости в конструкторе
только не понятно, почему по крону падает
Konstantin
Konstantin
даже если это стейджинг, то всё равно SYMFONY_ENV в prod должно быть выставлено
Александр II
а это точно ок, что env=dev ?
да норм, там не в этом была проблема
просто проблема была с $_SERVER["PWD"]
в логи ошибка не падала, ручной запуск - ок, а я заколебался руками все делать, написал makefile и там увидел ошибку Warning: Undefined array key "PWD"
странно что в логи не падало и не отлавливалось
Руслан 🇲🇨
Здраствуйте!
Пытаюсь установить Bootstrap. Выполнил команду
composer require symfony/webpack-encore-bundle
При попытке выполнить
yarn install
получаю ошибку:
"yarn" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Пожалуйста помогите.
Null
У вас нет yarn
Null
npm i киньте.
Руслан 🇲🇨
Null
У вас нет пакетного менеджера yarn.
Установите его, либо используйте npm.
Если и его нет - ставьте уже что-нибудь.
Aleksander
всем привет!
подскажите, как грамотно разделить в зависимостях несколько шин, типа command.bus и query.bus? (при том что дефолтная - event.bus)
на уровне команд-хандлеров всё получилось - всё по докам.
а вот что и как сделать чтобы в конструкторах указывать зависимость от конкретной шины - не пойму...
попробовал, конечно для каждой сделать свой интерфейс(типа interface CommandBusInterface extends MessageBusInterface),
но тут вполне понятная ошибка:
TestCommand::__construct(): Argument #1 ($bus) must be of type TheSite\Base\Model\Command\CommandBusInterface, Symfony\Component\Messenger\MessageBus given
сам вижу два варианта решения:
1) указывать шину явно для каждого зависимого сервиса в конфиге
2) наследовать для каждой шины класс и проставить их для каждой шины
1й варик совсем не нравица)
2й - так себе, терпимо, но вроде чутка костыльно
подскажите, мб есть варианты получше?
Спасибо!
Вадим
Konstantin
я бы руками расставил в ямле
Konstantin
потому что мудрить с уникальными именами не хочется, в каждом сервисе зависимость удобнее называть $bus
Aleksander
я бы руками расставил в ямле
я типа как раз бандл пытаюсь сделать, который всё что надо "прописывает в конфигах", чтобы переиспользовать не прописывая вручную....
ну и, даже если писать в конфигах - всё равно получается что надо для кажого зависиомго это писать, нет?
так что переопределить самы шини и дальше по их классам/интерфейсам - вроде самое лаконичное
Aleksander
Konstantin
сделайте класс-обертку для шины, который проксирует все вызовы в шину
Konstantin
альтернативный вариант - унаследоваться от шины (если она не финальная)
Konstantin
пустой класс-наследник. оно, конечно, не обманет lsp, но автовайрингу поможет
Konstantin
чисто как хинт для контейнера
Aleksander
Konstantin
это если шина финальная
Aleksander
Konstantin
ну типа (пишу с телефона, поэтому коряво)
class FooBus implements MessageBusInterface {
__construct(private readonly MessageBus $bus) {}
public function foo(): void {
$this->bus->foo(); }
// и вот так все публичные методы шины
Aleksander
Konstantin
это будет более строго, тк нельзя подсунуть базовый класс шины вместо наследника как в случае с наследованием
Konstantin
я бы на самом деле, наверное, это порешал через тэги и компайлер-пасс. типа помечаешь свой сервис "это клиент мессадж баса, ему нужна такая-то шина"
Вадим