我知道Silex方法的基础是将所有应用程序逻辑都放在一个文件中。但是我的应用程序将可能具有二十多个 Controller 。所以我想有一个方便的 map 来管理路由器。

我的问题是寻找能够将路由器制作成单独文件的解决方案。在最佳情况下,文件必须为YAML类型:

# config/routing.yml

_home:
    pattern: /
    defaults: { _controller: MyProject\Controller\MyController::index }

但是本地人也是个好例子(对我而言):
$routes = new RouteCollection();

$routes->add(
    'home',
    new Route('/', array('controller' => 'MyProject\Controller\MyController::index')
));

return $routes;

第二种情况的问题是,我必须为每个路由规则使用 match()函数。这一点还不清楚。

解决此问题的方法是什么?条件是我要使用现有的API Silex或Symfony2的组件。

小提示:

我的Controller类不使用 ControllerProviderInterface 。这是一个独立的类。

最佳答案

首先,Silex的基础并不是将所有内容都放在一个文件中。 Silex的基础是您创建自己的“框架”,即您自己的组织应用程序的方式。



在Silex的创建者this blogpost中阅读有关此内容的更多信息。

如何解决你的问题

您基本上想要的是解析Yaml文件,并从每个解析的路由中获取patterndefaults._controller设置。

要解析Yaml文件,可以使用Symfony2的the Yaml Component。您会得到一个数组,可以用来添加到Silex的路线:

// parse the yaml file
$routes = ...;
$app = new Silex\Application();

foreach ($routes as $route) {
    $app->match($route['pattern'], $route['defaults']['_controller']);
}

// ...
$app->run();

关于symfony - Silex的自定义路由配置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14676257/

10-10 05:45