在模板中,我需要在点击链接时将变量传递给控制器
{{ variable }}
<a href="{{ path('test',{ 'variable': 2}) }}">click</a>
。 怎么做?
/**
* @Route("/test", defaults={"variable" = 1}, name="test")
* @Method("GET")
* @Template()
*/
public function testAction($variable)
{
return array('variable'=>$variable);
}
你会说我需要@Route /test/{variable}
中的占位符,然后如何第一次访问网址test
?
编辑:这是一个愚蠢的问题。我在测试这个问题时遇到了一些缓存问题。安慰很明显。
答案 0 :(得分:5)
您需要像提到的那样定义@Route
注释:
/**
* @Route("/test/{variable}", defaults={"variable" = 0}, name="test")
* @Method("GET")
* @Template()
*/
public function testAction($variable)
{
return array('variable'=>$variable);
}
感谢defaults
选项,您可以使用或不使用variable
访问您的路线:
使用:
<a href="{{ path('test', {'variable': 2}) }}">click</a>
这将生成网址/test/2
,您的$variable
将等于2
不
<a href="{{ path('test') }}">click</a>
这将生成网址/test
,您的$variable
将等于0
(defaults
选项中设置的值)
答案 1 :(得分:0)
我必须做类似的事情,而@Tomasz,你的答案对我帮助很大。我的情况我需要两个变量。
使用上面的例子作为参考:
* @Route("/test/{variable}/{var2}",
* defaults={"variable" = 0, "var2" = 0},
* name="test")
* @Method("GET")
* @Template()
*/
public function testAction($variable, $var2)
{
return array('variable'=>$variable, 'var2 => $var2);
}
然后在树枝上你可以使用:
<a href="{{ path('test', {'variable': 2, 'var2': 3}) }}">click</a>
生成网址/test/2/3
就我而言,我使用的东西更像是一个实体:
<td><a href="{{ path('submitPetHasProgram',
{'prog':stu.getTcProgram.getProgramId,
'student':stu.getStuId}) }}">Select</a></td>
希望这将有助于将来为解决此类问题而努力的人。