Silex url生成器:无法生成

问题描述 投票:1回答:1

我正在使用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'失败。

url generator silex
1个回答
0
投票

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

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

换句话说:在您第一次使用UrlGenerator之前,预计会定义所有路径。

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

© www.soinside.com 2019 - 2024. All rights reserved.