具有ParamConverter注释的Symfony4 Twig路径

时间:2018-05-07 09:04:50

标签: php symfony url twig

我有一个带有ParamConverter注释的控制器,它完美无缺:

/**
* @Route("/pro/{uniqid}")
* @ParamConverter("company", options={"mapping":{"uniqid" = "uniqid"}})
* Class AdminController
* @package App\Controller
*/
class AdminController extends Controller
{}

内部我有一个方法,其中包含另一个ParamConverter注释:

/**
 * @Route("/admin/{user-uniqid}/edit", name="edit-user")
 * @ParamConverter("user", options={"mapping":{"user-uniqid" = "uniqid"}})
 * @param Company $company
 * @param User $user
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function editUser(Company $company, User $user){}
当我使用Twig时,

path

<a href="{{ path('edit-user', {'uniqid' : company.uniqid, 'user-uniqid' : permission.user.uniqid}) }}">Edit</a>

而不是创建像

这样的链接
http://symfony/pro/cie5aee957cc7a6d/admin/user-5aee93691d3a6/edit

它创建了这个链接:

http://symfony/pro/cie5aee957cc7a6d/admin/%7Buser-uniqi%7D/edit?user-uniqid=user-5aee93691d3a6

我无法解释为什么{user-uniqid}未正确填充以及为什么要创建新的查询参数...

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,我通过在变量名中用下划线替换连字符来解决它。

试试这个:

/**
 * @Route("/admin/{user_uniqid}/edit", name="edit-user")
 * @ParamConverter("user", options={"mapping":{"user_uniqid" = "uniqid"}})
 * ...
 */