Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silex url生成器:无法生成_Url_Generator_Silex - Fatal编程技术网

Silex url生成器:无法生成

Silex url生成器:无法生成,url,generator,silex,Url,Generator,Silex,我正在使用Silex url生成器命名我的路由。但是在不同的文件中检索它们似乎不起作用 我首先包括: 包含目录/app/pages/bootstrap.php'; 包括“目录”/app/news/bootstrap.php'; 在bootstrap的页面中,我有: $app->get('/admin/pages',函数(请求$Request)使用($app){ //代码 })->绑定('admin.pages.index'); echo$app['url_generator']->genera

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

我首先包括:

包含目录/app/pages/bootstrap.php';
包括“目录”/app/news/bootstrap.php';
在bootstrap的页面中,我有:

$app->get('/admin/pages',函数(请求$Request)使用($app){
//代码
})->绑定('admin.pages.index');
echo$app['url_generator']->generate('admin.pages.index');
在新闻引导中,我有:

$app->get('/admin/news',函数(请求$Request)使用($app){
//代码
})->绑定('admin.news.index');
echo$app['url_generator']->generate('admin.news.index');
它会生成“admin.pages.index”性能,但对于“admin.news.index”,我会收到:

“无法为命名路由“admin.news.index”生成URL,因为该路由不存在。”
观察结果

•当我将所有内容放在一个文件中时,效果良好

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

包含目录/app/news/bootstrap.php';
包括“目录”/app/pages/bootstrap.php';

它生成的“admin.news.index”很好,但“admin.pages.index”失败。

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

  • 已声明路由(“admin.pages.index”)
  • 您使用UrlGenerator,从而调用其构造函数,,它将路由作为参数
  • 声明了另一个路由(“admin.news.index”)
  • 您再次使用UrlGenerator,但这次返回的是同一个实例
  • 换句话说:所有的路由都应该在您第一次使用UrlGenerator之前定义


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

    如果将代码放在2个文件中,并带有您发布的代码,则会发生以下情况:

  • 已声明路由(“admin.pages.index”)
  • 您使用UrlGenerator,从而调用其构造函数,,它将路由作为参数
  • 声明了另一个路由(“admin.news.index”)
  • 您再次使用UrlGenerator,但这次返回的是同一个实例
  • 换句话说:所有的路由都应该在您第一次使用UrlGenerator之前定义


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

    我现在理解了问题的根源。我将修改代码,以便首先绑定所有路由名称。非常感谢您的精彩解释。顺便说一下:将控制器代码放入真实控制器中是组织控制器代码的更好方法。只需在web上搜索示例和博客文章。我确实有真正的控制器,但我简化了stackoverflow的代码,因为它们建议使用最少的代码示例()。我现在理解了问题的根源。我将修改代码,以便首先绑定所有路由名称。非常感谢您的精彩解释。顺便说一下:将控制器代码放入真实控制器中是组织控制器代码的更好方法。只需在web上搜索示例和博客文章。我确实有真正的控制器,但我简化了stackoverflow的代码,因为它们建议使用最少的代码示例()。