如何在传递参数的树枝中生成url?
也许这是一个愚蠢的问题,但我花了很多时间试图使它的工作...如何在传递参数的树枝中生成url?
这是从我的路由文件:
search:
path: /search
defaults: { _controller: MyAppBundle:Default:search}
我的树枝模板:
{{ path('search', {'value': value}) }}
而且我的控制器:
public function searchAction(Request $request){
$value = $request->query->get('value');
我的问题是后续ING,上述数据我生成这个网址:
/search/value
,而不是我想要的网址:
/search?value=value
我喜欢干净的网址,但我需要使用通过在URL中的值“?”由于我需要在URL传递不同的价值观和他们中的一些可以在不同情况下
如果你面临这样的问题,请检查你是不是通过你的参数在你的路由文件,并检查你有没有一种形式,你的HTML与岗位作为方法(如果您有任何形式的POST方法,改变它得到将解决问题)
省略为什么不这样做,而不是:
search:
path: /search/{value}
defaults: { _controller: MyAppBundle:Default:search}
public function searchAction(Request $request, $value){
// Do something with $value...
它不涉及URL问题,但是你可以很容易地在你的Twig文件中设置值参数,这是在Symfony中完成它的标准方法。
编辑#2 - 基于评论。
我做的是这样的:
{{ path('searchPet',{'petID': pet.getPetId}) }}
在上述情况下,searchPet
是路由,petID
是参数名称,并pet.getPetId
是我pet
方法;其中pet
是我已经传递给控制器(Twig呈现)的请愿Entitiy;所以我打电话getPetId()
,它返回申请的Id。
所以,如果你在控制器这样的渲染param
是变量:
return $this->render('search.html.twig', array(
'param' => 'test',
...
));
然后在枝杈做到这一点:
{{ path('search', {'value': param}) }}
那么URL将是在这种情况下:/search/test
编辑#3 - 根据最新评论。
报价要发送,所以要送“测试”的值,这样做:
{{ path('search', {'value': 'test'}) }}
我测试了这一点 - 它的工作原理。
感谢您的回复。我总是以这种方式配置路由,但正如您所说的那样,并没有解决URL问题。如何在树枝中设置值参数?我知道我可以手动创建网址,但我宁愿不手动(例如,为了避免将来需要更改域名) –
是的,我明白你的意思。但我没有任何问题通过我的价值观枝(如果我正确理解你)。我的问题是产生在树枝的URL,如果我在这方面,我都会越来越/搜索/值,而不是/搜索?值把所有=值我需要第二个选项 –
没有也不会等于“值”,如果你使用让我们说'getMyValue'并返回一个整数。该URL可能是'/搜索/ 34237',即如果'getMyValue'返回'34237'为整数。你明白吗?它不等于“价值”! –
请参阅我的编辑#2评论。 –
它必须工作!如果您将参数传递给树枝中的路径而无需将此参数添加到路由,它将向您显示网址中的变量,而不会干净url –