如何在Symfony 2中获取请求参数?

2022-08-30 06:20:19

我对symfony很陌生。在其他语言中,如java和其他语言,我可以用来获取值。request.getParameter('parmeter name')

我们可以用symfony2做任何类似的事情吗?
我看过一些例子,但没有一个对我有用。假设我有一个名为用户名的表单字段。在表单操作中,我尝试使用如下内容:

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

我也试过

$username = $request->getParameter('username');

$username=$request->request->getParameter('username');

但是没有一个选项是有效的。但是,以下工作正常:

foreach($request->request->all() as $req){
    print_r($req['username']);
}

我在使用方法时做错了什么。任何帮助将不胜感激。getParameter()


答案 1

命名并不是那么直观:

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request)
{
    // $_GET parameters
    $request->query->get('name');

    // $_POST parameters
    $request->request->get('name');

2021 年 11 月更新:$request->get('name') 在 5.4 中已弃用,自 6.0 起将变为私有。它的使用已经被劝阻了很长一段时间。


答案 2

我做得更简单:

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request)
{
    $foo = $request->get('foo');
    $bar = $request->get('bar');
}

另一种选择是将参数引入操作函数定义中:

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request, $foo, $bar)
{
    echo $foo;
    echo $bar;
}

然后,假设您在 routing.yml 文件中将 {foo} 和 {bar} 定义为 URL 模式的一部分:

acme_myurl:
    pattern:  /acme/news/{foo}/{bar}
    defaults: { _controller: AcmeBundle:Default:getnews }

推荐