Silex url 生成器:无法生成

Silex url generator: Unable to generate

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

我先把它们包括在内:

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

在页面 bootstrap 我有:

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

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

在新闻中 bootstrap 我有:

$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' 失败。

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

  1. 声明了一条路线(“admin.pages.index”)
  2. 您使用 UrlGenerator,从而调用其构造函数,它将路由作为参数
  3. 声明了另一条路线(”admin.news.index”)
  4. 您再次使用 UrlGenerator,但这次返回相同的实例。

换句话说:所有 路由应该在您第一次使用 UrlGenerator 之前定义。

话虽如此,如果您将所有内容都放在一个文件中,我不知道为什么它会起作用,除了我猜想在那种情况下,您有一个路由声明块,然后是一个带有2 个 UrlGenerator 方法调用。