控制器中的 Symfony 5 路由名称
Symfony 5 Route name in Controller
如何在Symfony 5 的控制器中获取当前路由的名称?
当我尝试这个时,我得到 NULL:
$this->Request = Request::createFromGlobals();
$route = $this->Request->attributes->get('_route');
var_dump($route);
找到答案:
只需添加RequestStack作为函数参数,然后调用RequestStack->getCurrentRequest()->get('_route');
use Symfony\Component\HttpFoundation\RequestStack;
public function yourCalledFunction(Utilities $u, RequestStack $requestStack) {
$route = $requestStack->getCurrentRequest()->get('_route');
}
不建议在控制器内创建请求。
获取已创建请求的首选方式是 DI 和自动装配:
// 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
如何在Symfony 5 的控制器中获取当前路由的名称? 当我尝试这个时,我得到 NULL:
$this->Request = Request::createFromGlobals();
$route = $this->Request->attributes->get('_route');
var_dump($route);
找到答案
只需添加RequestStack作为函数参数,然后调用RequestStack->getCurrentRequest()->get('_route');
use Symfony\Component\HttpFoundation\RequestStack;
public function yourCalledFunction(Utilities $u, RequestStack $requestStack) {
$route = $requestStack->getCurrentRequest()->get('_route');
}
不建议在控制器内创建请求。 获取已创建请求的首选方式是 DI 和自动装配:
// 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