2012-06-21 131 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')) {...}