在 Sonata 项目中找到路由命中的控制器

Posted

技术标签:

【中文标题】在 Sonata 项目中找到路由命中的控制器【英文标题】:Find the controller that a route is hitting in a Sonata project 【发布时间】:2019-02-17 08:25:24 【问题描述】:

我正在开发一个基于 Symfony 2.7 和 Sonata 管理包的项目。该项目使用包含“取消发布”步骤的工作流。我想修改那一步的逻辑。

运行app/console debug:router | grep unpublish 给了我这个:

admin_mycompany_app_video_unpublish                                 ANY      ANY    ANY  /admin/mycompany/app/video/id/unpublish/

...在我的代码库中搜索 admin_mycompany_app_video_unpublish 只会在 appDevDebugProjectContainerUrlMatcher.php 中找到以下内容:

return $this->redirect($pathinfo.'/', 'admin_mycompany_app_video_unpublish');

所以路线存在,但我似乎找不到它指向的控制器。

对于找到那个控制器有什么建议吗?

【问题讨论】:

试试grep -r unpublish src/ | grep Controller app/console router:match /admin/exozet/app/video/123/unpublish 应该可以解决问题 【参考方案1】:

您可以在 VideoAdmin 的 getRoutes() 方法中找到它,它是根据命名约定动态计算的

对应的代码应该在VideoAdminController中。

希望对你有帮助

【讨论】:

以上是关于在 Sonata 项目中找到路由命中的控制器的主要内容,如果未能解决你的问题,请参考以下文章

路由未命中控制器

在路由匹配发生之前拦截所有 WebApi 调用

未找到渲染 Sonata Admin Twig 文件的变量形式

Sonata 管理控制器 + 依赖注入

我可以在 Sonata Admin 控制器中使用 prePersist/preUpdate 来持久化多个对象吗?

数据表 Ajax url 未命中控制器操作