如何在Symfony2中隐藏URL中的参数
问题描述:
我不希望用户在我的URL中看到参数。如何在Symfony2中隐藏URL中的参数
实施例:
my_route:
path: /***/{id}
defaults: { _controller: MyBundle:Default:myaction}
的路由将这样产生:
*** /产品/ 1
我想只看到
***/product
答
正如com这个请求需要一些东西来标识你想要获取的资源。但这与URL重写无关。如果要显示资源,而不是ID的蛞蝓,请执行下列操作:
my_route:
path: /products/{slug}
defaults: { _controller: MyBundle:Default:myaction}
然后,在MyBundle /控制器/ DefaultController.php:
public function myactionAction(Request $request, $slug)
{
$product = $this->getDoctrine()->getManager()->getRepository('MyBundle:Product')->findOneBy(["slug" => $slug]);
}
,当你想创建这个产品的链接,使用
<a href="{{ path('my_route', {'slug': product.slug}) }}">link to the product</a>
所以,当服务器收到'/ product'的直接请求,它应该如何决定显示哪个产品? – Paulpro
有Url重写器如何做到这一点? –
您可以将'/ product/1'重写为'/ product/potato-pie',而不是'/ product'。每个网址仍需要一些方法来唯一标识资源。 – Paulpro