【问题标题】:symfony2 request object get() functionsymfony2 请求对象 get() 函数
【发布时间】:2014-03-31 02:53:53
【问题描述】:

我有一个使用 createFormBuilder() 方法构建的标准登录表单。当我尝试 获取输入

$this->get('request')->request->get('userName'); 

我得到 NULL 因为 $this->get('request')->request 是一个 ParameterBag 对象,它只有 'form' 字段和输入值。所以当我这样做时......

$this->get('request')->request->get('form')

我得到了想要的结果,但在一个数组中

array(
    'userName' => 'Dude',
    'password' => 'password'
);

这很好,但有没有更直观的获取 POST 数据的方法?

我找到了这个StackOverflow answer,但没有帮助。

我也尝试将 Request 对象作为控制器方法中的参数,但没有结果。

【问题讨论】:

  • 这怎么“不直观”?您现在知道request 包含POST 数据。你想达到什么目的?
  • 我在 3 天前开始使用 sympfony2,我记得我可以使用 $request->get('userName') 获取数据。我知道在 symfony 中没有一种方法可以做某事,所以我认为还有另一种方法可以做到这一点。
  • 如果您想直接从请求对象中获取userName,您可以使用$request->request->get('form[userName]', null, true)$request->get('form[userName]', null, true)。调用Request::get 将查看$request->query,然后是$request->attributes,然后是$request->request
  • 我试过这个功能,但我没有看到 $default 参数。感谢您的帮助。
  • $form->bind($request); $data = $form->getData(); echo $data['userName']?

标签: php symfony


【解决方案1】:

基本上,我会首先验证一个表单是否有效。然后,我将绑定表单对象并使用该表单来获取一些数据。因此,代码应如下所示:

if ($request->getMethod('post') == 'POST') {
        // Bind request to the form
        $form->submit($request);
        // If form is valid
        if ($form->isValid()) {
            // Get data from the userName field
            $username = $form->get('userName')->getData();            
        }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 2018-01-06
    • 2022-01-08
    • 2021-02-03
    • 1970-01-01
    • 2011-10-18
    • 2016-11-06
    相关资源
    最近更新 更多