Php 控制器中的路由。Symfony2

Php 控制器中的路由。Symfony2,php,symfony,routing,Php,Symfony,Routing,我在symfony的路线有问题 我有一个函数 public function showresultsAction($product) 需要运行对象$product 我试着用下面这句话来形容这一行动: $product = $form ->get('product'); return $this->redirect($this->generateUrl('_gs_downloads_product', array( 'object' => $p

我在symfony的路线有问题

我有一个函数

  public function showresultsAction($product)
需要运行对象$product

我试着用下面这句话来形容这一行动:

  $product = $form ->get('product'); 
  return $this->redirect($this->generateUrl('_gs_downloads_product', array(
       'object' => $product)));
当我运行我的应用程序时,我获得:

 Controller ProductController::showresultsAction()" requires that you provide a value 
 for the "$product" argument (because there is no default value or because there is a 
 non optional argument after this one).
谢谢你的帮助

我的路线定义:

_gs_downloads_product:
    path:  /download/list/product
    defaults: { _controller: AcmeProjectBundle:Product:showresults}  

问题在于路线定义。您案例中生成的url如下所示

"/download/list/product"
将路线更改为如下所示:

_gs_downloads_product:
    path:  /download/list/{product}
    defaults: { _controller: AcmeProjectBundle:Product:showresults}
"/download/list/12"
您的url将如下所示:

_gs_downloads_product:
    path:  /download/list/{product}
    defaults: { _controller: AcmeProjectBundle:Product:showresults}
"/download/list/12"

假设您的
$product
变量为
12

查看路线,您没有在路线中定义参数,如

_gs_downloads_product:
    path:  /download/list/product/{object}
    defaults: { _controller: AcmeProjectBundle:Product:showresults} 
然后你的函数看起来像

public function showresultsAction($object)
您还可以将参数定义为可选参数或任何默认值

_gs_downloads_product:
    path:  /download/list/product/{object}
    defaults: { _controller: AcmeProjectBundle:Product:showresults, object: null} 
或使用默认值

_gs_downloads_product:
    path:  /download/list/product/{object}
    defaults: { _controller: AcmeProjectBundle:Product:showresults, object: 1} 

显示您的路线definition@MKhalidJunaid编辑了问题。谢谢你的回答。有没有办法不在URL中显示我的对象?我只需要将
$product
传递给action showresults。据我所知,Symfony中没有内置的方法可以做到这一点。谢谢您的回答。我有两个答案,我问你另一个人的答案。有没有办法不在URL中显示我的对象?我只需要将$product传递给action showresults。实体id不应该在url中最好是每个实体都有一个唯一的名称,即对于每个产品,您应该有唯一的slug,并将此slug传递到url中,而不是id,然后使用它