2015-07-03 61 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> 

希望這能幫助未來的人解決這類問題。

相關問題