4

我有一个非常简单的问题,如何从 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 请求的正确方法是什么?

4

5 回答 5

8

很简单:

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

注意:此解决方案仅适用于 Symfony <2.4 版本。对于 2.4已弃用并在 3.0 中删除。

获取请求的新代码应该是:

$request = $this->container->get('request_stack')->getCurrentRequest();
$postData = $request->request->get('test');
于 2012-06-21T14:00:31.177 回答
3

$this->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] 使用新的 request_stack 服务来获取基础 Controller 类中的 Request 对象。

于 2014-08-22T09:08:15.750 回答
1

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

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

切勿在不安全的操作中使用 POST 或 GET 之类的 GLOBALS。

在这里您可以找到更多详细信息:http ://symfony.com/blog/new-in-symfony-2-4-the-request-stack

于 2014-10-08T07:53:18.253 回答
0

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

于 2012-06-21T14:00:24.533 回答
0

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

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

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

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

if ($request->isMethod('post')) {...}
于 2015-10-01T22:03:26.000 回答