Symfony - 处理来自$ _POST本身的请求,而不搜索表单类名
My question is how can I handle request data from the $_POST data itself. I mean when I'm trying to $form->handleRequest( $request );
symfony tries to get the data from $_POST[form_classname], but I want to fill my form class straight from base $_POST variable
UPD: Actually I want to handle the information from the outer site. And I have to develop something like an API. But without authorization, tokens, etc.. So I decided to build the form with some properties I need. After validation the form might do some logic. So, am I doing right? Or there will be pitfalls?
UPD: Here is an example of $_POST I have to handle
Function=TransResponse&RESULT=0&RC=00&AUTHCODE=745113
As you can see, there is no form name in request. The $form->handleRequest( $request );
works only if the request was like an
[form_name][Function]=TransResponse&[form_name][RESULT]=0&[form_name][RC]=00&[form_name][AUTHCODE]=745113
But I can't change the request format, so I am in hope to solve it as much as fast and simple as possible
Just put in your form class
/** @inheritdoc */
function getBlockPrefix() {
return '';
}
Here is the information about this method Documentation
Use
-
$this->get('form.factory')->createNamed('')
-
$this->get('form.factory.)->createNamedBuilder('')
to create a Form or FormBuilder respectively that uses the whole $_POST
/$_GET
array for its parameters.
Example:
/**
* @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>');
}