Php 控制器中的路由。Symfony2
我在symfony的路线有问题 我有一个函数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
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,然后使用它