Silex url生成器:无法生成

时间:2015-08-16 09:36:32

标签: url generator silex

我正在使用Silex url生成器命名我的路线。但是对它们的检索似乎不适用于不同的文件。

我先把它们包括在内:

include __DIR__ . '/app/pages/bootstrap.php';
include __DIR__ . '/app/news/bootstrap.php';

在页面引导程序中,我有:

$app->get('/admin/pages', function(Request $request) use($app){
   // code
})->bind('admin.pages.index');

echo $app['url_generator']->generate('admin.pages.index');

在新闻引导中,我有:

$app->get('/admin/news', function(Request $request) use($app){
   // code
})->bind('admin.news.index');

echo $app['url_generator']->generate('admin.news.index');

它生成'admin.pages.index'perfeclty,但是对于'admin.news.index'我收到:

'Unable to generate a URL for the named route "admin.news.index" as such route does not exist.' 

观察

•当我将所有内容放在一个文件中时,它可以正常工作。

•当我将加载顺序更改为:

include __DIR__ . '/app/news/bootstrap.php';
include __DIR__ . '/app/pages/bootstrap.php';

它生成'admin.news.index'很好,但'admin.pages.index'失败。

1 个答案:

答案 0 :(得分:0)

将代码放在包含您发布的代码的2个文件中时,会发生以下情况:

  1. 声明路线(“admin.pages.index”)
  2. 您使用UrlGenerator,因此调用其构造函数,它将路由作为参数
  3. 宣布另一条路线(“admin.news.index”)
  4. 您再次使用UrlGenerator,但这次会返回相同的实例。
  5. 换句话说:在第一次使用UrlGenerator之前,预计会定义所有路由。

    话虽如此,如果你把所有东西放在一个文件中,我不知道为什么它应该有效,除了我猜在那种情况下,你有一个路由声明块,然后是一个带有2个UrlGenerator的块方法调用。