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

时间:2017-09-13 14:39:16

标签: php symfony post symfony-3.3

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

UPD: 其实我想处理来自外部网站的信息。我必须开发类似API的东西。但未经授权,令牌等。 所以我决定用我需要的一些属性构建表单。验证后,表单可能会做一些逻辑。所以,我做对了吗?或者会有陷阱?

UPD: 这是我必须处理的$ _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

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

2 个答案:

答案 0 :(得分:0)

使用

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

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

示例:

/**
 * @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>');
}

答案 1 :(得分:-1)

只需填写表单类

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

以下是有关此方法的信息Documentation