【发布时间】:2015-12-09 01:14:06
【问题描述】:
我的 Symfony2 设置有一个非常奇怪的问题。
我正在开发一个 RESTful Web 服务并希望设置路由。
我有一个可以正常工作的应用程序,并且想更改我的 routing.yml 配置。
工作配置
my_product:
resource: My\Bundle\ProductBundle\Controller\DefaultController
type: rest
prefix: /
当我将其更改为:
my_product:
resource: "@MyProductBundle/Controller/"
type: rest
prefix: /
我收到以下错误:
Symfony\Component\Config\Exception\FileLoaderLoadException" message="找不到控制器的类 @MyProductBundle/Controller/ 中的“@MyProductBundle/Controller/”(其中 正在从 “/home/myproduct/domains/example/v5/app/config/routing.yml”)。制作 确保“MyProductBundle”捆绑包已正确注册和加载 在应用程序内核类中。如果捆绑包已注册,请制作 确保捆绑路径“@MyProductBundle/Controller/”不为空。
当我将类型从“rest”更改为“annotation”时,错误消失了。
我做错了什么?我找不到它,我的搜索一无所获。
非常感谢!
【问题讨论】:
-
您是否尝试将“@MyProductBundle/Controller/”更改为“@MyProductBundle/Controller/DefaultController”?错误是说找不到控制器的类。无论如何,当您指定
type: rest时,您会告诉捆绑包自动从resource中指定的控制器的操作名称生成路由,因此resource: My\Bundle\ProductBundle\Controller\DefaultController应该可以工作,我认为交换您提到的两个路由没有任何好处。\跨度> -
感谢您的帮助!我认为不提及控制器名称更容易,因为它不必将每个控制器添加到我的路由器配置中,从而节省了我的时间。您对此有何看法?
-
我不这么认为,先生。
type:annotation告诉FrameworkBundle在您在resource中指定的捆绑包的controller文件夹中查看您的控制器文件,并查找已定义的路由作为注释。但是type:rest告诉FOSRestBundle在特定控制器中查找动作,并根据动作名称自动生成路由。这是由 2 个不同的捆绑包处理的两种不同的事情。FOSRestBundle实现了这种自动化,但我认为它还没有为controller文件夹中的所有控制器实现这一点。我希望我没有错,等待专家详细信息表格 SO -
这个问题你在哪里?我是完全正确的还是我遗漏了什么?有兴趣了解更多
-
现在我只是保持原样,因为缺乏时间和答案。也许我会在(不久的)将来悬赏它。
标签: php rest symfony fosrestbundle