如何将变量从树枝路径传递到同一个控制器?

时间:2015-07-03 23:05:47

标签: symfony

在模板中,我需要在点击链接时将变量传递给控制器​​

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

编辑:这是一个愚蠢的问题。我在测试这个问题时遇到了一些缓存问题。安慰很明显。

2 个答案:

答案 0 :(得分: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>
    

    这将生成网址/test/2,您的$variable将等于2

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

    这将生成网址/test,您的$variable将等于0defaults选项中设置的值)

答案 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>

希望这将有助于将来为解决此类问题而努力的人。