1

このルーターリストがあります:

$router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin/<presenter>/<action>', 'Dashboard:default');

$router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

ただし、これら 2 つのルーター リストをモジュール フォルダーに分けた方がよいでしょう。将来的には、さまざまなルーター リストを持つモジュールをさらに作成する予定です。どうすれば分離でき、その後どうすれば登録できますか?

4

1 に答える 1

3

RouteFactory を使用する

config.neon で

services:
  routeFactory.Front: FrontModule\RouteFactory
  routeFactory.Admin: AdminModule\RouteFactory
  route:
    class: \RouteFactory
    setup: 
      - addRouteFactory(@routeFactory.Front)
      - addRouteFactory(@routeFactory.Admin)

クラス RouteFactory:

class RouteFactory
{
  /** @var array */
  private $routerFactories = array();


  public function addRouteFactory(IRouteFactory $routeFactory)
  {
    $this->routeFactories[] = $routeFactory;
  }

  public function createRouter()
  {
    $router = new RouteList();
    foreach ($this->routeFactories as $routeFactory) {
      $router[] = $routeFactory->createRouter();
    }

    return $router;
  }
}

インターフェース IRouteFactory:

interface IRouteFactory
{
  public function createRouter();
}

モジュール ルート ファクトリ

namespace FrontModule;

class RouteFactory implements \IRouteFactory
{
  public function createRouter()
  {
    $router = new RouteList('Front');
    // your routes

   return $router;
  }
}
于 2014-07-18T04:07:01.043 に答える