【发布时间】:2016-03-17 18:54:16
【问题描述】:
我正在做一个项目,我有大约 98 个控制器。我们决定将这个项目迁移到 Symfony。我已经能够创建一个名为“mdBundle”的自定义 Bundle。
如果我在 routing.yml 文件中使用 type: 注释,它会被注册,我可以毫无问题地访问控制器。
但是,因为我们有这么多控制器,所以在动作中创建注释需要很长时间。因此,我试图想出一种方法,让我的 routing.yml 可以处理任何请求并执行请求的控制器。
现在我的 routing.yml 看起来像这样:
mdRoute:
path: /{_controller}/{_action}/
defaults: { _controller: mdBundle:_controller:_action }
我的Controller(DefaultController.php)是这样的:
namespace mdBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller
{
public function indexAction(Request $request)
{
return new Response('foo');
}
public function testingAction(Request $request)
{
return new Response('Bar');
}
}
当我运行它时,我收到以下错误: ControllerResolver.php 第 69 行中的 LogicException: 无法解析控制器名称“默认”。
我的文件夹结构与 symfony 的默认结构有点不同。我的 Bundle 在 /root/app/mdBundle/ 内(
或者还有什么其他方法可以在不必为我的 98 个控制器中的每一个操作添加注释的情况下完成此操作?
【问题讨论】:
-
98 个控制器?不是很多。花 30 分钟将它们添加到您的路线文件中。否则,搜索动态路由。
标签: php symfony symfony-routing