Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Symfony 2中获取请求参数?_Php_Symfony - Fatal编程技术网

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

Php 如何在Symfony 2中获取请求参数?,php,symfony,Php,Symfony,我对symfony很陌生。在java和其他语言中,我可以使用request.getParameter('parmeter name')获取值 我们是否可以用symfony2做类似的事情。 我见过一些例子,但没有一个对我有用。假设我有一个名为用户名的表单字段。在form action中,我尝试使用以下内容: $request = $this->getRequest(); $username= $request->request->get('username'); public

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

我们是否可以用symfony2做类似的事情。
我见过一些例子,但没有一个对我有用。假设我有一个名为用户名的表单字段。在form action中,我尝试使用以下内容:

$request = $this->getRequest();
$username= $request->request->get('username'); 
public function someAction(Request $request)
我也试过了

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

但所有选项都不起作用。不过,以下选项效果良好:

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

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

命名并不那么直观:

use Symfony\Component\HttpFoundation\Request;

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

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

可以使用以下代码获取表单字段值

use Symfony\Component\HttpFoundation\Request;

public function updateAction(Request $request)
{
    // retrieve GET and POST variables respectively
    $request->query->get('foo');
    $request->request->get('bar', 'default value if bar does not exist');
}
或者,您也可以使用

$request->request->all()
我做得更简单:

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 }
试一试


检查公式字段的属性名称

如果需要从选择中获取值,可以使用:

$form->get('nameSelect')->getClientData();
控制器内部:

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

由于现在
$this->getRequest()
方法已被弃用,您需要将
Request
对象注入控制器操作,如下所示:

$request = $this->getRequest();
$username= $request->request->get('username'); 
public function someAction(Request $request)
之后,您可以使用以下选项之一

如果要从请求获取POST数据,请使用以下命令:

$request->request->get('var_name');
但如果要从请求获取数据,请使用以下命令:

$request->query->get('var_name');
试试这个,它管用

$this->request = $this->container->get('request_stack')->getCurrentRequest();
考虑到您的选择:

$request = Request::createFromGlobals();
$getParameter = $request->get('getParameter');
  • 简单:
    • $request->request->get('param')
      $\u POST['param']
      )或
    • $request->query->get('param')
      $\u get['param']
  • 良好的Symfony表单,具有所有验证、值转换和带错误的表单呈现以及许多其他功能:
  • 介于两者之间的内容(参见下面的示例)
  • 您可以这样做:

    $clientName = $request->request->get('appbundle_client')['clientName'];
    
    有时,当属性受到保护时,您无法访问以获取常用访问方法的值:

    (职位)

    (得到)

    (通用)


    大多数情况下,如获取查询字符串或表单参数,都包含在上面的答案中

    在处理原始数据时,如要将主体中的原始JSON字符串作为
    JSON\u decode()
    的参数,可以使用该方法

    $content = $request->getContent();
    
    有关Symfony中HTTP请求的其他有用信息,请参见软件包文档

    use Symfony\Component\HttpFoundation\Request;
    
    public function indexAction(Request $request, $id) {
    
        $post = $request->request->all();
    
        $request->request->get('username');
    
    }
    
    谢谢,您也可以为symfony 4用户使用上述代码:

    $query = $request->query->get('query');
    
    #www.example/register/admin

      /**
     * @Route("/register/{role}", name="app_register", methods={"GET"})
     */
    public function register(Request $request, $role): Response
    {
     echo $role ;
     }
    


    第二行有一个输入错误:
    $request->request-get()
    应该是
    $request->request->get()
    。可能是这样吗?我在代码中也写了同样的内容。这里漏掉了。很抱歉这里的输入错误。这仍然不起作用。您是否(a)检查手册以确保
    get()
    是正确的方法,以及(b)打开PHP通知以便查看是否有任何问题?(c) Symfony 2是否有类似Symfony 1的调试工具栏,以便查看是否有错误?是否混淆了名字和用户名?这里有更多信息:它与PHP使用的不同,但实际上更有意义
    $\u GET
    数据是来自查询字符串的数据(根本不需要
    GET
    请求),而
    $\u POST
    数据是来自请求正文的数据(也不必是
    POST
    请求,可以是
    PUT
    )。尝试了$request->query->GET('name');但是它也不起作用。我如何从PUT请求中获取参数?这里的命名非常奇怪,当然
    $request->get
    $request->post
    会更简单。来自igorw的评论清楚地说明了这种奇怪的命名约定$request->request->all()对我有效,但类似于$request->query->->get('foo');不起作用。+1,因为我认为在所有响应中,只有这一个真正说明了不明显的事情-如果您在symfony的form builder的帮助下自动创建了表单,symfony会将表单字段重命名为超出您预期的内容。这里提到的name=“acme\u demobundle\u userform[field\u name]”语法不适用于PHP5.3.10。支持该功能的最低版本是什么?@justinasleys try$userType=$request->request->get('acme\u demobundle\u userType')$用户名=$userType['username']@Justinasleys语法是PHP5.4,无法定义“用户名”。所以最好先检查一下“?”。在第一个例子中,如果我在查询字符串和POST正文中都有
    foo
    参数,那么
    $request->get('foo')
    将返回哪个参数?看起来优先级是get,PATH,POST这是最好的答案不是。该方法本身的文档表示,不鼓励使用它,因为它比通过特定集合访问GET/POST参数要重。答案是正确的
    $request->GET('foo')适用于所有行李(顺序为:路径、获取、发布)。然而,
    $request->request->get('foo')仅适用于邮袋。最后,如果我们知道数据的位置(get/POST),则不建议使用第一个(
    $request->get()
    )。在较新版本的Symfony中,
    $this->getRequest()
    不赞成将请求注入控制器操作,例如:
    公共函数showAction(request$request,$id)这根本不能回答问题。提出问题的人已经有权访问请求对象。@LaytonEverson抱歉,您弄错了,他的方法/$this->getRequest()从2.4开始就被弃用了,这就是为什么它不起作用,所以他实际上没有权访问请求对象;)虽然您没有错,但asker想知道是什么方法从reque检索变量
    
    $content = $request->getContent();
    
    use Symfony\Component\HttpFoundation\Request;
    
    public function indexAction(Request $request, $id) {
    
        $post = $request->request->all();
    
        $request->request->get('username');
    
    }
    
    $query = $request->query->get('query');
    
      /**
     * @Route("/register/{role}", name="app_register", methods={"GET"})
     */
    public function register(Request $request, $role): Response
    {
     echo $role ;
     }