Symfony - 处理来自 $_POST 本身的请求,无需搜索表单类名

Symfony - handle request from $_POST itself, without searching form classname

我的问题是如何处理来自 $_POST 数据本身的请求数据。我的意思是,当我尝试 $form->handleRequest( $request ); symfony 尝试从 $_POST[form_classname] 获取数据时,但我想直接从基本 $_POST 变量[=] 填写我的表格 class 14=]

更新: 实际上我想处理来自外部站点的信息。我必须开发类似 API 的东西。但未经授权,令牌等.. 所以我决定用我需要的一些属性来构建表单。验证后,表单可能会执行一些逻辑。那么,我做得对吗?还是会有坑?

更新: 这是我必须处理的 $_POST 示例

Function=TransResponse&RESULT=0&RC=00&AUTHCODE=745113

如您所见,请求中没有表单名称。 $form->handleRequest( $request ); 仅在请求类似于

时才有效
[form_name][Function]=TransResponse&[form_name][RESULT]=0&[form_name][RC]=00&[form_name][AUTHCODE]=745113

但是我无法更改请求格式,所以我希望尽可能快速和简单地解决它

填入表格即可class

/** @inheritdoc */
function getBlockPrefix() {
    return '';
}

这里是关于这个方法的信息Documentation

使用

  • $this->get('form.factory')->createNamed('')
  • $this->get('form.factory.)->createNamedBuilder('')

分别创建使用整个 $_POST/$_GET 数组作为其参数的 Form 或 FormBuilder。

示例:

/**
 * @Route("/testRoute")
 * @param Request $request
 * @return Response
 */
public function testAction(Request $request): Response
{
    $form = $this->get('form.factory')->createNamedBuilder('', FormType::class, null, ['csrf_protection' => false])
        ->add('text', TextType::class)
        ->setMethod('GET')
        ->getForm();

    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        return new Response($form['text']->getData());
    }

    return new Response('<a href="?text=123">Submit me</a>');
}