get-> Symfony2中的请求

时间:2012-06-21 13:51:11

标签: php post symfony

我有一个非常简单的问题,如何从get-> Request();

获取POST值
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请求,对于Post请求,我会检查我的代码

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

但它不是symfony2方式,那么检查POST请求的正确方法是什么?

5 个答案:

答案 0 :(得分:8)

简单如下:

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

注意:此解决方案仅对Symfony&lt; 2.4版本有效。对于2.4 is deprecated并删除3.0。

获取请求的新代码应为:

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

答案 1 :(得分:3)

$ this-&gt; getRequest()是自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.

答案 2 :(得分:0)

试试这个 $this->getRequest()->request->get($path)

答案 3 :(得分:0)

你不应该使用getRequest()方法弃用它总是一个好主意将请求注入你的控制器。定义你这样的行动:

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

永远不要在你的行动中使用像POST或GET这样的GLOBAL,因为它们不安全。

您可以在此处找到更多详情:http://symfony.com/blog/new-in-symfony-2-4-the-request-stack

答案 4 :(得分:0)

如Symfony2博客中所述,您应该直接使用Request对象作为控制器中方法的参数。

对于服务,您可以通过__construct方法注入对象并将其存储在内部属性中。

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

确定您的请求方法是否发布

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