2015-07-03 60 views
2

在模板我需要传递变量到控制器点击链接如何将变量从树枝路径传递到相同的控制器?

{{ 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


编辑:这是愚蠢的问题。测试此问题时,我遇到了一些缓存问题。答案很明显。

回答

5

您需要定义您的@Route注释就像你提到:

/** 
* @Route("/test/{variable}", defaults={"variable" = 0}, name="test") 
* @Method("GET") 
* @Template() 
*/ 
public function testAction($variable) 
{ 
    return array('variable'=>$variable); 
} 

感谢defaults选项,你可以使用或不variable访问路线:

  1. 有了:

    <a href="{{ path('test', {'variable': 2}) }}">click</a> 
    

    这将生成url /test/2和你$variable将等于2

  2. 没有:

    <a href="{{ path('test') }}">click</a> 
    

    这将产生网址/test和你$variable将等于0(A值defaults选项中设置)

+0

我发誓。在问问题之前,我做了你写的东西,并得到类似如下的错误:“no route for/test。你需要添加变量”。今天它变得更加完美。昨天测试这个问题时可能会出现一些缓存问题。无论如何,感谢愚蠢的问题 - 好的回答,批准。 – Sruj

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> 

生成URL /test/2/3

在我的情况,我用更多的东西看上去像是一个实体:

<td><a href="{{ path('submitPetHasProgram', 
    {'prog':stu.getTcProgram.getProgramId, 
    'student':stu.getStuId}) }}">Select</a></td> 

希望这能帮助未来的人解决这类问题。

相关问题