首页 > 解决方案 > 在 redirectToRoute 中发送参数并在控制器中获取它

问题描述

我尝试在重定向中发送参数,但控制器中的 get 返回null

重定向:

    public function taskInUser(User $user): Response
    {
        return $this->redirectToRoute('task_add', ['user' => $user]);
    }

在控制器中:

    /**
     * @Route("/add", name="task_add")
     *
     */
    public function addAction(User $user = null): Response
    {
        dump($user);die();
        ...
    }

我也尝试这样做:

    /**
     * @Route("/add", name="task_add")
     *
     */
    public function addAction(Request $request): Response
    {
        dump($request->query->get('equipment');die();
        ...
    }

它没有用。我在控制器中收到null,但我检查了一下,它发送了一个很好的价值。

标签: phpsymfony

解决方案


为什么不在路由声明中添加参数?看这里 :

https://symfony.com/doc/current/routing.html#route-parameters

您可以将用户 ID 用作 int :

    /**
     * @Route("/add/{user_id}", name="add_user")
     */
     public function addAction(int $user_id)

或使用 ParamConverter 将 id 转换为 User 而不使用 Repository 功能。

https://symfony.com/doc/current/routing.html#parameter-conversion


推荐阅读