如何在Symfony2中隐藏URL中的参数

问题描述:

我不希望用户在我的URL中看到参数。如何在Symfony2中隐藏URL中的参数

实施例:

my_route: 
    path:  /***/{id} 
    defaults: { _controller: MyBundle:Default:myaction} 

的路由将这样产生:

*** /产品/ 1

我想只看到

***/product

+1

所以,当服务器收到'/ product'的直接请求,它应该如何决定显示哪个产品? – Paulpro

+0

有Url重写器如何做到这一点? –

+1

您可以将'/ product/1'重写为'/ product/potato-pie',而不是'/ product'。每个网址仍需要一些方法来唯一标识资源。 – Paulpro

正如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>