@symfony_php

Страница 603 из 1418
Andrew
28.01.2018
09:55:53
@noh

@thatside # controllers are imported separately to make sure services can be injected # as action arguments even if you don't extend any base controller class App\Application\Controller\: autowire: true resource: '../src/Application/Controller' tags: ['controller.service_arguments']

Bohdan
28.01.2018
09:56:44
для хендлеров можно сделать аналогично, только тег указать, который написан у меня выше и другой путь хм, сейчас ещё гляну исходники свои

Daniel
28.01.2018
09:56:54
https://www.jetbrains.com/mps/?fromMenu - кто нибудь такое использует?

Google
Daniel
28.01.2018
09:57:03
В проектах у кого нибудь*

Вот чо ему дать, чтобы он в базу данных не лез Аналитики что делают обычно у вас? Диаграмки последовательности?

Bohdan
28.01.2018
09:59:23
@thatside # controllers are imported separately to make sure services can be injected # as action arguments even if you don't extend any base controller class App\Application\Controller\: autowire: true resource: '../src/Application/Controller' tags: ['controller.service_arguments']
а как у тебя сделан пофиг бандла тактисиан самого? ʼʼʼ tactician:   commandbus:     default:       middleware:         - tactician.middleware.locking         - myproject.tactician.middleware.events         - tactician.middleware.command_handler       method_inflector: tactician.handler.method_name_inflector.class_name ʼʼʼ

вторая мидлвара - моя кастомная

Andrew
28.01.2018
10:00:23
@thatside tactician: commandbus: default: middleware: - tactician.middleware.command_handler

стандартные конфиги

Andrew
28.01.2018
10:01:38
Смысл в том, что сейчас он ответственный* за новый функционал и уже создал таблицы и требует, чтобы в базе все так и было
если он ответственный за новый функционал, так пусть отвечает за функционал, а не за то как результаты отработавшего функционала будут сохраняться

Bohdan
28.01.2018
10:02:11
стандартные конфиги
инфлектор попробуй вписать +теги как я писал для хендлеров

Andrew
28.01.2018
10:03:03
ну как бы попробуй обьяснить что дизайн приложения это чуть сложнее чем структура базы и если юзать инструменты которые ты юзаешь, структура таблицы становится вторичной и на первый план выходят обьекты и взаимодействие между ними, которые вы должны смоделировать

Andrew
28.01.2018
10:04:05
@thatside Добавил инфлектор, все - равно надо инжектить '@tactician.commandbus.default' в каждый контроллер ручками

eferences class "League\Tactician\CommandBus" but no such service exists. It cannot be auto-registered because it is from a different root namespace.

Bohdan
28.01.2018
10:04:46
а это уже приколы твоих контроллеров, похоже ну и их регистрации

Andrew
28.01.2018
10:06:27
@thatside А еще, вот что выдает The service "tactician.commandbus.default" has a dependency on a non-existent service "tactician.handler.method_name_inflector.class_name".

Google
Bohdan
28.01.2018
10:06:40
хе...

Andrew
28.01.2018
10:06:48
Я или конфиги где-то не так указал, или бандл неверно поставил

у меня симфони 4.0.4

Или этот бандл не идет нормально под симфони 4

И возможно было делать своей что-то.

Bohdan
28.01.2018
10:08:04
@thatside А еще, вот что выдает The service "tactician.commandbus.default" has a dependency on a non-existent service "tactician.handler.method_name_inflector.class_name".
tactician.handler.method_name_inflector.class_name:     class: League\Tactician\Handler\MethodNameInflector\ClassNameInflector вот ещё зарегай

в исходной либе он есть, а в бандле нет

и я регал сам

Andrew
28.01.2018
10:09:21
@thatside сейчас попробую

Bohdan
28.01.2018
10:10:40
вот с контроллерами мне точно непонятно там явно что - то не так с их регистрацией у тебя вообще для них неймспейс выделен?

у меня 3.4,потому я проверить не могу нормально

Andrew
28.01.2018
10:10:58
Да.

Could not invoke handler for command App\Command\CreateUserBusCommand for reason: Method 'createUserBusCommand' does not exist on handler

@thatside убрал инфлектор # method_inflector: tactician.handler.method_name_inflector.class_name и команда заработал, только если она конечно зарегестрирована в сервисе

app.handler.createuserbuscommandhandler: class: App\Handler\CreateUserBusCommandHandler tags: [{name: tactician.handler, typehints: true}] autowire: true

@thatside и еще Вот такое мне надо прописывать вообще для каждого контроллера

App\Controller\RegistrationController: arguments: - '@tactician.commandbus.default' calls: - [setContainer, ['@service_container']]

на каждый контроллер, и на каждый хендел, именно поетому я тут спросил как весь етот мусор выкинуть

ибо у меня только на етот сраный пакет ушло более 2 000+ строк в сервис файле

Bohdan
28.01.2018
10:19:47
чезанафиг...зачем тебе контейнер в контроллерах, если есть автовайринг?

Google
Bohdan
28.01.2018
10:20:28
вот этот конфиг пробовал?

MyBundle\Controller\:     resource: '../../Controller/*'     autowire: true     tags: ['controller.service_arguments']

попробуй допустим так

App\Controller\RegistrationController: autowire: true calls: - [setContainer, ['@service_container']] tags: ['controller.service_arguments']

про контейнер уже забудем пока но автовайринг должен работать нормально вот именно замени описание данного контроллера тем, что я дал

Andrew
28.01.2018
10:23:15
_defaults: autowire: true autoconfigure: true public: false App\: resource: '../src/*' App\Controller\RegistrationController: autowire: true calls: - [setContainer, ['@service_container']] tags: ['controller.service_arguments']

Class "App\Controller\RegistrationController" used for service "App\Controller\RegistrationController" cannot be found.

В контроллере

class RegistrationController { private $commandBus; public function __construct( CommandBus $commandBus ){ $this->commandBus = $commandBus; }

Bohdan
28.01.2018
10:25:30
так у тебя явно с неймспейсами проблема

неймспейс и местонахождение контроллера какие?

Andrew
28.01.2018
10:28:08
Да, поправил, однако ComandBus все так же недоступен

Andrew
28.01.2018
10:28:22
у меня несколько контроллеров для регистрации

немножк запутался.

Cannot autowire service "App\Controller\RegistrationController": argument "$commandBus" of method "__construct()" references class "League\Tactician\CommandBus" but no such service exists. It cannot be auto-registered because it is from a different root namespace.

Bohdan
28.01.2018
10:29:56
а в composer.json psr-4 неймспейсы прописаны аналогично?

Andrew
28.01.2018
10:30:25
"autoload": { "psr-4": { "App\\": "src/" }

Andrew
28.01.2018
10:35:41
"autoload": { "psr-4": { "App\\": "src/" }
А мне показалось или там где-то выше проскакивало App\Application ?

Andrew
28.01.2018
10:36:33
"config": { "preferred-install": { "*": "dist" }, "sort-packages": true }, "autoload": { "psr-4": { "App\\": "src/" } }, "autoload-dev": { "psr-4": { "App\\Tests\\": "tests/" } }, "scripts": { "auto-scripts": {

Bohdan
28.01.2018
10:36:40
а версия tactician-bundle?

Google
Andrew
28.01.2018
10:36:55
"league/tactician-bundle": "^1.1",

Bohdan
28.01.2018
10:37:12
https://github.com/thephpleague/tactician-bundle/issues/95 вот это еще обсуждается но вроде как должно работать, судя по последнему комменту

в конце концов

ты можешь сделать свой сервис League\Tactician\CommandBus с алиасом на @tactician.command_bus или как там

я не знаю, почему оно у тебя не заводится само - у меня проблем таких не было

попробуй вариант с алиасом на сервис

League\Tactician\CommandBus: '@tactician.command_bus' ну или как там у тебя

Andrew
28.01.2018
10:44:16
League\Tactician\CommandBus: '@tactician.commandbus.default'

Bohdan
28.01.2018
10:45:21
допустим так, проверяй

Admin
ERROR: S client not available

Andrew
28.01.2018
10:46:31
Да, теперь каждый контроллер имет доступ к CommandBus

Bohdan
28.01.2018
10:46:51
ну хоть одну проблему победили)

теперь теоретически можно выкинуть все объявления контроллеров и свести к одноому resource

Andrew
28.01.2018
10:47:35
Угу, пасиб) Теперь бы как-то автоматизировать процес регистрации command->handler

Ибо каждый раз вручную прописывать а потом следить за всем.

Там что-то было про addCompilerPass

В Kernel

Bohdan
28.01.2018
10:48:23
ну тут надо с инфлекторами играться как у тебя в хендлерах называются команды и их обработчики сами?

я так понимаю, ты переводишь живой проект на sf4?

Andrew
28.01.2018
10:48:49
CreateUserBusCommand

Google
Andrew
28.01.2018
10:48:54
CreateUserBusCommandHandler

Я делаю оптимизацию)

Bohdan
28.01.2018
10:49:35
то есть, у тебя на одну команду - один хендлер, так?

именно класс

Andrew
28.01.2018
10:49:44
да

class CreateUserBusCommand {

Bohdan
28.01.2018
10:49:59
и при этом в хендлере какой метод?

Sergey
28.01.2018
10:49:59
CreateUserBusCommand
и зачем тебе эти суффиксы?

Bohdan
28.01.2018
10:50:08
или там __invoke?

Andrew
28.01.2018
10:50:18
@fes0r сразу видно что это

@thatside class CreateUserBusCommandHandler { public function handle() {...}

Sergey
28.01.2018
10:51:10
Bohdan
28.01.2018
10:51:24
tags: - { name: tactician.handler, command: Foo\User\RegisterUserCommand } с таким тегом, да?

Andrew
28.01.2018
10:52:00
@thatside app.handler.createuserbuscommandhandler: class: App\Handler\CreateUserBusCommandHandler tags: [{name: tactician.handler, typehints: true}] autowire: true

Sergey
28.01.2018
10:52:09
@fes0r сразу видно что это
RegisterUserCommand достаточно, или даже Command\RegisterUser + Handler\RegisterUserHandler. Не нужно упоминать комманд бас лишний раз

Bohdan
28.01.2018
10:52:18
то бишь из примера - <?php class RegisterUserHandler { public function handle(RegisterUser $command) { // do stuff } }

аналогично, так?

Sergey
28.01.2018
10:52:29
а вообще - command bus не нужны

Bohdan
28.01.2018
10:52:49
а вообще - command bus не нужны
крутись, вентилятор)

Sergey
28.01.2018
10:52:58
от слова совсем. единственная польза от command bus это когда у тебя хэндлеры как экторы в отдельных процессах висят и вся связь через MQ

вот тогда да, тогда комманд бас решает проблемы маршрутизации и прячет всю эту подноготную

Andrew
28.01.2018
10:54:15
@fes0r но ведь у нас есть еще: 1 консольные команды 2 - доктрин команды 3 - maker bundle commands 4 - twig commands уверене еще омжно найти, если поискать

Страница 603 из 1418