Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony中带有{slug}的generateUrl_Php_Symfony - Fatal编程技术网

Php Symfony中带有{slug}的generateUrl

Php Symfony中带有{slug}的generateUrl,php,symfony,Php,Symfony,对于控制器,我有以下路径: /** * @Route("/fail/{uid}", name="bookFail", defaults={"uid"=0}) */ 从另一个控制器,我重定向如下: return $this->redirect($this->generateUrl('bookFail', array('id' => $jobExists->getId())), 301); 这就导致了: /hvz/web/app_dev.php/fail?id=XXX

对于控制器,我有以下路径:

/**
 * @Route("/fail/{uid}", name="bookFail", defaults={"uid"=0})
 */
从另一个控制器,我重定向如下:

return $this->redirect($this->generateUrl('bookFail', array('id' => $jobExists->getId())), 301);
这就导致了:

/hvz/web/app_dev.php/fail?id=XXX
但应该是这样的:

/hvz/web/app_dev.php/fail/XXX
我目前的解决方案是:

$this->redirect(str_replace('?id=','/',$this->generateUrl('bookFail', array('id' => $jobExists->getId()))), 301);

这在很多层面上都是可行的,但感觉是错误的,那么什么才是“正确”的解决方案呢?

你应该很乐意这样做:

return $this->redirect($this->generateUrl('bookFail', array('uid' => $jobExists->getId())), 301);

问题在于参数url中,您需要在路由定义中具有与参数相同的名称,并且在
generateUrl
函数中传递的数组参数中也需要具有与参数相同的名称

return $this->redirect($this->generateUrl('bookFail', array('uid' => $jobExists->getId())), 301);
问题在于参数url中需要与路由定义中的参数同名,以及在
generateUrl
函数中传递的数组参数