php 如何处理来自$_POST的请求,其中请求上没有定义Symfony表单,而不搜索表单类名?

tktrz96b  于 2022-11-21  发布在  PHP
关注(0)|答案(2)|浏览(140)

我如何处理来自$_POST数据本身的请求数据呢?我的意思是,如果我尝试像这样处理表单:$form->handleRequest($request);,Symfony会尝试从$_POST['form_classname']获取数据,但我想直接从基本$_POST变量填充表单类。
实际上我想处理来自外部站点的信息。我必须开发一些类似API的东西。但是没有授权,令牌等...
所以我决定用我需要的一些属性来构建表单。验证之后,表单可能会做一些逻辑。
下面是我必须处理的$_POST的示例

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

正如您所看到的,请求中没有表单名称。

[form_name][Function]=TransResponse&[form_name][RESULT]=0&[form_name][RC]=00&[form_name][AUTHCODE]=745113

但我无法更改请求格式。

k2arahey

k2arahey1#

只需将窗体类

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

以下是有关此方法的信息文档

f2uvfpb9

f2uvfpb92#

用途

  • $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>');
}

相关问题