【问题标题】:Get symfony route from controller action annotations从控制器动作注释中获取 symfony 路由
【发布时间】:2016-04-15 17:36:57
【问题描述】:

我有一个这样的控制器操作:

/**
 * @Route("/post/delete/{id}", name="delete_post_modal")
 */
public function deleteAction(Post $post)
{
    // ...
}

注解@Route 告诉symfony 在路由匹配delete_post_modal 时执行方法deleteAction。 所有这些都可以正常工作。

问题:有没有办法反转这个功能并从方法名称中获取路由名称?

从上面的例子:

  • 我有:PostController::deleteAction()(或self::deleteAction)
  • 我需要得到:delete_post_modal

谢谢!

【问题讨论】:

  • 我是一个内部使用 symfony 的 laravel 用户,我认为有一个名为 Request 的类可以用来获取路径信息。
  • 有一个控制台命令可以通过 url 匹配 route_name : router:match ,希望对您有所帮助。 link

标签: symfony


【解决方案1】:

试试这个

更新

 $router = $this->container->get('router');

foreach ($router->getRouteCollection()->all() as $route => $params)
{
    $defaults = $params->getDefaults();

    if ( strpos($defaults['_controller'],'PostController::deleteAction') ) {
        $myroute = $route;
        break;
    }
}

【讨论】:

  • 这可以获取 current 请求的路由,但是我需要更通用的方法来通过一般知道控制器和方法名称来生成路由名称。
猜你喜欢
  • 1970-01-01
  • 2015-05-22
  • 2018-02-25
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 2022-08-14
  • 2014-08-25
  • 1970-01-01
相关资源
最近更新 更多