【问题标题】:How to handleRequest from html form in Symfony?如何在 Symfony 中处理来自 html 表单的请求?
【发布时间】:2021-03-09 07:24:33
【问题描述】:

我有简单的 html 表单和控制器来处理它。 注意 我没有在 html.twig 中使用 Symfony 的表单,例如 {{form_start(form)}} ...。所以我想在Controller中处理简单的html表单。

我的请求正文包含在下面

+request: Symfony\Component\HttpFoundation\ParameterBag {#10
#parameters: array:2 [
    "name" => "name"
    "amount" => "name"
  ]

}

在 Controller.php 我有 $form

$defaultData = ['message' => 'Type your message here'];


    $form = $this->createFormBuilder($defaultData)
        ->add('name')
        ->add('amount')
        ->getForm();

    //here I can't handle the request;
    $form->handleRequest($request);
    
    // only 'message' is contain
    dd($form->getData());
    

How to Use a Form without a Data Class 从文档中我尝试在不使用 $data = $request->request->get('data') 的情况下处理来自 html 表单的请求

【问题讨论】:

    标签: php forms symfony


    【解决方案1】:

    在我在每个 Symfony 论坛上尝试处理和询问之后,我发现了这个问题,

    我的错误只是指定了我的请求参数。 首先,我需要找出我的 $form 的名称是什么。为了解决这个问题,我丢弃了刚刚创建的 $form

    dd($form);
    
    [![enter image description here][1]][1]
    

    之后我的请求应该如下所示

    然后我就可以处理Request()了!

    【讨论】:

    • 您应该在handleRequest() 之后添加这样的条件:if($form->isValid() && $form->isSubmitted()) 并在输入条件时检索您的数据。并创建一个 FormType 类而不是在您的控制器上创建它:)。
    • @Hamham 感谢您的反馈,但我知道如何使用表单类型,正如我所说的如何从简单的 html 表单而不是 symfony 的表单中检索数据,所以这是我的答案。跨度>
    • 抱歉造成误解。此外,在控制器的参数中添加对象请求,并在使用 POST 或 GET 形式的函数中通过 $request->request->getAll()$request->query->getAll() 获取它们。
    • 很高兴你能成功。有一种方法可以删除元素名称的“形式”部分,以便与“常规形式”一起使用。需要一些解释,所以如果你想看到它,我必须发布一个答案。您还可以搜索一个不太可能名称为 getBlockPrefix 的方法。您基本上创建自己的表单类型类并添加 public function getBlockPrefix() { return '';} 并且对表单前缀的需求将消失。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 2018-04-01
    • 2017-06-02
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多