Controller 中的 Symfony 5 路由名称

标签 symfony symfony5

如何在 Symfony 5 的 Controller 中获取当前路由的名称? 当我尝试这个时,我得到 NULL:

$this->Request = Request::createFromGlobals();
$route = $this->Request->attributes->get('_route');

var_dump($route);

最佳答案

不建议在您的 Controller 中创建请求。 获取已创建请求的首选方式是 DI 和 Autowiring :

// src/Controller/BlogController.php
namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;

class BlogController extends AbstractController
{
    /**
     * @Route("/blog", name="blog_list")
     */
    public function list(Request $request)
    {
        $routeName = $request->attributes->get('_route');
        $routeParameters = $request->attributes->get('_route_params');

        var_dump($routeName);
    }
}

此请求由 Symfony HttpKernel 处理并填充了附加信息。

更多信息:https://symfony.com/doc/current/routing.html#getting-the-route-name-and-parameters

它是如何到达那里的:https://github.com/symfony/symfony/blob/b2609c4bae69ca383b97cb520da2ed9be1c48449/src/Symfony/Component/Routing/Matcher/UrlMatcher.php#L217

关于 Controller 中的 Symfony 5 路由名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63723642/

相关文章:

Symfony 冒充另一个用户后获得原始用户

php - symfony2 实体验证正则表达式 a-z A-Z 0-9

php - 使用 parameter.yml 值的 Symfony 3 Datafixtures

symfony - 类 "1\HomeController"不存在

php - 注册后自动记住我

php - 尝试调用 类 的名为 "getRequest"的未定义方法。在 SwiftMailer Symfony 中发送电子邮件

php - Symfony 4.4 Auth0如何从应用程序中完全注销用户

php - 如何在 Api-Platform 中为虚拟属性(property)引入过滤功能?

php - 将配置从 service.yaml 移动到 Symfony5 中的另一个文件

php - 使用 Symfony 路由的 MVC 路由