我有一个非常简单的问题,如何从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请求的正确方法是什么?
答案 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();
}
由以下演变引入,
答案 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')) {...}