Size: a a a

2020 February 28

DS

Dmitriy S in Yii Framework 3
Александр Некрасов
можно поподробнее?
Два модуля имеют одинаковое наименование группы роутов, при мерже они перезапишутся. Группа роутов забита жестко в модуле. Я исхожу с той позиции, чтобы можно было задавать произвольное наименование группы роутов для подключаемого модуля. Например, у тебя есть модуль  user, с групой роутов users. Я хочу чтобы у меня группа роутов называлась customers.
источник

АН

Александр Некрасов in Yii Framework 3
Dmitriy S
Два модуля имеют одинаковое наименование группы роутов, при мерже они перезапишутся. Группа роутов забита жестко в модуле. Я исхожу с той позиции, чтобы можно было задавать произвольное наименование группы роутов для подключаемого модуля. Например, у тебя есть модуль  user, с групой роутов users. Я хочу чтобы у меня группа роутов называлась customers.
ну у меня не завазяно на модули, я передаю ключь как название группы

return [
   '/v1' => [
       '/account' => [
           Route::post('/create', [Controller\CreateController::class, 'index'])->name('v1/account/create'),
           )
       ]
   ]
];
источник

АН

Александр Некрасов in Yii Framework 3
к примеру
источник

DS

Dmitriy S in Yii Framework 3
А если  у тебя еще один модуль v1 будет?
источник

АН

Александр Некрасов in Yii Framework 3
из другого модуля могу добавить в любую группу
источник

АН

Александр Некрасов in Yii Framework 3
это в другом модуле

return [
   '/v1' => [
       '/account' => [
             Route::post('/test', [Controller\CreateController::class, 'index'])->name('v1/account/test'),
       ]
   ]
];

на выходе выйдет

return [
   '/v1' => [
       '/account' => [
           Route::post('/create', [Controller\CreateController::class, 'index'])->name('v1/account/create'),
         Route::post('/test', [Controller\CreateController::class, 'index'])->name('v1/account/test'),
           )
       ]
   ]
];
источник

АН

Александр Некрасов in Yii Framework 3
для моего юзкейса хватает)
источник

DS

Dmitriy S in Yii Framework 3
Ок, давай по порядку.  У тебя в каждом модуле в config есть файл routes.php правильно? Он  указан в конфиге для плагина композера и им же мержиться, правильно?
источник

АН

Александр Некрасов in Yii Framework 3
Dmitriy S
Ок, давай по порядку.  У тебя в каждом модуле в config есть файл routes.php правильно? Он  указан в конфиге для плагина композера и им же мержиться, правильно?
да
источник

DS

Dmitriy S in Yii Framework 3
Александр Некрасов
для моего юзкейса хватает)
Верю, но не всем такое подходит.
источник

АН

Александр Некрасов in Yii Framework 3
ну и фабрика уже

   public function __invoke(ContainerInterface $container)
   {
       $routes = require Configurator::config('routes')->path();

       $collector = $container->get(RouteCollectorInterface::class);
       $collector->addGroup(Group::create(null, $this->buildRoutes($routes)));

       return new UrlMatcher(new RouteCollection($collector));
   }

   private function buildRoutes(array $routes): array
   {
       foreach ($routes as $index => $route) {
           if (is_string($index)) {
               $routes[] = Group::create($index, $this->buildRoutes($route));
               unset($routes[$index]);
           }
       }

       return $routes;
   }
источник

DS

Dmitriy S in Yii Framework 3
Александр Некрасов
ну и фабрика уже

   public function __invoke(ContainerInterface $container)
   {
       $routes = require Configurator::config('routes')->path();

       $collector = $container->get(RouteCollectorInterface::class);
       $collector->addGroup(Group::create(null, $this->buildRoutes($routes)));

       return new UrlMatcher(new RouteCollection($collector));
   }

   private function buildRoutes(array $routes): array
   {
       foreach ($routes as $index => $route) {
           if (is_string($index)) {
               $routes[] = Group::create($index, $this->buildRoutes($route));
               unset($routes[$index]);
           }
       }

       return $routes;
   }
Да это понятно,  я так пробовал. Чуть позже добавлю в роутер билдер и можно будет объявлять роуты в декларативном стиле (без объектов) в форматах php-array, json, xml.
источник

АН

Александр Некрасов in Yii Framework 3
Dmitriy S
Да это понятно,  я так пробовал. Чуть позже добавлю в роутер билдер и можно будет объявлять роуты в декларативном стиле (без объектов) в форматах php-array, json, xml.
маякнешь как добавишь)
источник

А

Алексей R in Yii Framework 3
@samdark а зачем эмиттер из приложения выносить?
источник

А

Алексей R in Yii Framework 3
чтобы с RR было проще или чего?
источник

А

Алексей R in Yii Framework 3
а, из-за swoole?
источник

AM

Alexander Makarov in Yii Framework 3
из за RR и Swoole
источник

Д

Дмитрий in Yii Framework 3
Ага, всё-таки мой посыл делать независимые компоненты был услышан?)
А как же остальное, оно полностью подходит под свуле? Бд, файлы, сеть и прочее?
источник

AM

Alexander Makarov in Yii Framework 3
Умгу.
источник

AM

Alexander Makarov in Yii Framework 3
Более-менее.
источник