Symfony3路由控制器

时间:2016-12-10 16:00:55

标签: php symfony

您好我的路由问题。

我的普通Appbundle充满了用户和管理员的控制器。我不想将我的所有控制器分成另一个包。

所以我的计划是在我的AppBundle中创建另一个子目录,如下所示。

src/AppBundle/Controller/Admin/Admincontroller

src/AppBundle/Controller/User/UserController

在我的routing.yml中,我创建了这样的链接(也尝试了不同的选项)

test:
path: /test
defaults: { _controller: AppBundle:Admin/TestController:test }

但我仍然遇到路由问题

也无法在我的控制器中创建路线。

我的命名空间如下所示

namespace AppBundle\Admin\Controller;    

所以我不确定我的路由有什么问题,以及为什么symfony无法识别我的控制器。在普通目录中,一切正常

enter image description here

我的错误消息

CRITICAL - Uncaught PHP Exception Symfony\Component\Config\Exception\FileLoaderLoadException: "Class AppBundle\Admin\Controller\TestController does not exist in C:\Users\ylamb\Documents\dev\db-yl\src\AppBundle/Controller/ (which is being imported from "C:\Users\ylamb\Documents\dev\db-yl\app/config\routing.yml")." at C:\Users\ylamb\Documents\dev\db-yl\vendor\symfony\symfony\src\Symfony\Component\Config\Loader\FileLoader.php line 118 

2 个答案:

答案 0 :(得分:0)

使用Controller格式时,不应使用Bundle:Controller:action后缀:

test:
    path: /test
    defaults: { _controller: AppBundle:Admin/Test:test }

Fyi,您也可以在路由中使用正常的FQCN::method语法。这样可以避免像这样的“魔法”和令人困惑的情况:

test:
    path: /test
    defaults: { _controller: AppBundle\Controller\Admin\TestController::testAction }

答案 1 :(得分:0)

控制器中的命名空间不正确:

namespace AppBundle\Admin\Controller;

它被放置在路径下:

AppBundle\Controller\Admin\TestController.php

所以它应该是

namespace AppBundle\Controller\Admin;

或者保留命名空间,但以其他方式组织目录。