【问题标题】:Symfony2 Unable to find the controller for pathSymfony2 找不到路径的控制器
【发布时间】:2014-02-12 20:18:27
【问题描述】:

我对这个问题的所有研究都让我一无所获:

我仍然有这个错误:找不到路径“/blog/1”的控制器。也许您忘记在路由配置中添加匹配的路由?,每次都为 BlogBu​​ndle 使用此路由

blog_index:
    path:    /{page}
    defaults: { _controller: PathBlogBundle:Blog:index, page: 1 }
    requirements:
        page:  "\d*"
        _method:  GET

blog_see:
    path:    /article/{id}
    defaults: { _controller: PathBlogBundle:Blog:voir }
    requirements:
        id:  "\d+"
        _method:  GET

blog_add:
    path:    /add
    defaults: { _controller: PathBlogBundle:Blog:ajouter }
    requirements:
        _method:  POST

blog_update:
    path:    /update/{id}
    defaults: { _controller: PathBlogBundle:Blog:modifier }
    requirements:
        id:  "\d+"
        _method:  GET

blog_delete:
    path:    /delete/{id}
    defaults: { _controller: PathBlogBundle:Blog:supprimer }
    requirements:
        id:  "\d+"
        _method:  GET

这是应用程序之一:

default:
    resource: "@PathBlogBundle/Resources/config/routing.yml"
    prefix:    /

path:
    resource: "@PathBlogBundle/Resources/config/routing.yml"
    prefix:    /blog

【问题讨论】:

  • 尝试使用page: \d+ 代替blog_index 路由而不是page: "\d*"
  • 谢谢,我试过了,还是不行。似乎我的缓存:清除进入无限循环并崩溃。
  • 所以,rm -rf app/cache/* ; ) 请从您的模式中删除 " 字符:symfony.com/doc/current/book/routing.html#adding-requirements
  • 完成但也不起作用(我使用localhost/Symfony/web/app_dev.php/blog/1
  • 我错了...您的捆绑包PathBlogBundle 中有名称为Blog 的控制器吗?这个控制器应该在/src/Path/BlogBundle/Controllers/BlogController.php 并且应该有indexAction 方法。

标签: php symfony routes


【解决方案1】:

您的问题很可能出在 app/config/config.yml 文件中。您似乎有两种不同的配置指向同一个资源,而不是一个。

default:
    resource: "@PathBlogBundle/Resources/config/routing.yml"
    prefix:    /

DagomaBlogBundle:
    resource: "@PathBlogBundle/Resources/config/routing.yml"
    prefix:    /blog

Symfony 看第一个配置,也就是

default:
    resource: "@PathBlogBundle/Resources/config/routing.yml"
    prefix:    /

尝试删除带有前缀路径 / 的配置并刷新。

【讨论】:

  • 能不能把blog_index的配置放在文件末尾刷新一下?
  • 看saheel的回答,这个url在浏览器上给你什么?本地主机/Symfony/web/app_dev.php/blog/blog/1
【解决方案2】:

app/config/routing.yml 中注释掉导入的路由文件(用于测试)。添加这个:

blog_index:
    path:    /blog/{page}
    defaults: { _controller: PathBlogBundle:Blog:index, page: 1 }
    requirements:
        page:  \d+
        _method:  GET

如果这可行,那么您就知道问题在于您如何导入 yml 文件。如果这不起作用,那么一定是某个地方存在更深层次的问题。

更新:

app/config/routing.yml中添加以下内容

path:
    resource: "@PathBlogBundle/Resources/config/routing.yml"
    prefix:    /blog

【讨论】:

  • 您一定是导入了 routing.yml 文件错误。你能告诉我你要导入的路由文件的绝对路径吗?我可以告诉你如何导入它。
  • 导入路由的文件夹:/var/www/Symfony/src/Path/BlogBu​​ndle/Resources/config
  • yml 文件的名称是什么?是routing.yml,还是别的什么?
  • 很有趣,那么您的导入应该可以正常工作。无论如何,将app/config/routing.yml 中的所有内容都注释掉,并仅添加我添加到我的答案中的导入(仅用于测试)。如果它是文件中唯一的东西,让我们看看它是否会起作用。
  • 如果我请求 blog/article/1 或 blog/add,Arf 不起作用
【解决方案3】:

通过删除路径中 {} 附近的多余空格来解决此问题。

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2016-11-18
    • 1970-01-01
    • 2012-08-18
    • 2016-06-08
    相关资源
    最近更新 更多