2012-06-21 81 views
4

我有一個非常簡單的問題,我如何從get-> Request()獲取POST值。get-> Symfony2中的請求

public function emptytrashAction(){ 
    $request = $this->getRequest(); 
    $portfolio_id = $_POST["test"]; 
} 

我不想使用$_POST變量和形式,我提出只包含這個隱藏的現場測試。形式是,

<form name="empt_trash" action="{{ path('MunichInnovationGroupPatentBundle_portfolio_emptytrash') }}" method="post" > 
    <input type="hidden" name="test" value={{ selected_portfolio.id }}> 
    <input class="button3 tooltip" name = "submit" type="submit" value="Empty"></a> 
</form> 

如何在不使用$_POST的情況下獲得隱藏字段的值?

編輯

如果方法使用GET和POST請求,該職位要求我在我的代碼檢查這樣

  if ($request->getMethod() == 'POST') 

,但它並不是Symfony2的方式又是什麼正確的方法來檢查POST請求?

+0

阿里漢起亞海,但mujay奈米拉錦鯉固體jawab AAP他巴塔岱恩:) –

+0

巴基斯坦豪吶...... idhar B線maarny aaty ho :( –

+0

你能說英語嗎? – j0k

回答

7

簡單:

$request = $this->getRequest(); 
$postData = $request->request->get('test'); 

注意:本解決方案僅適用於Symfony的< 2.4版本。用於2.4 is deprecated並刪除3.0。

用於獲得該請求的新的代碼應該是:

$request = $this->container->get('request_stack')->getCurrentRequest(); 
$postData = $request->request->get('test'); 
+0

謝謝j0k。我可以問你一個更簡單的問題嗎? –

+0

更新你的問題或發表一個新的:) – j0k

+0

讓我更新它 –

0

試試這個 $this->getRequest()->request->get($path)

2

$這 - > Request()方法是因爲symfony的2.4棄用方法,它會在3.0版本,所以最好的方式被去除獲取當前請求是通過下面的代碼:

//src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php 
... 

/* 
* ... 
* @deprecated Deprecated since version 2.4, to be removed in 3.0. Ask 
*    Symfony to inject the Request object into your controller 
*    method instead by type hinting it in the method's signature. 
*/ 
public function getRequest() 
{ 
    return $this->container->get('request_stack')->getCurrentRequest(); 
} 

通過以下進化介紹,

[FrameworkBundle] use the new request_stack service to get the Request object in the base Controller class.

0

你不應該使用getRequest()方法它的棄用總是一個好主意將請求注入到你的控制器。定義你的動作是這樣的:

public function emptytrashAction(Request $request){ 
    $portfolio_id = $request->request->get('test'); 
} 

切勿使用GLOBALS像POST或者你的行動,他們是不安全的GET。

在這裏你可以找到更多的細節:http://symfony.com/blog/new-in-symfony-2-4-the-request-stack

+0

如果有人讓我知道倒票的原因,這將是偉大的。可能會幫助我使我的答案更有幫助和準確。 –

0

如Symfony2的博客描述,你應該直接使用Request對象爲在控制器上你的方法參數。

對於服務,您可以通過__construct方法注入對象並將其存儲在內部屬性中。

http://symfony.com/blog/new-in-symfony-2-4-the-request-stack

要確定您的請求方法爲後

if ($request->isMethod('post')) {...}