vendor/symfony/form/Extension/HttpFoundation/HttpFoundationRequestHandler.php line 38
<?php/** This file is part of the Symfony package.** (c) Fabien Potencier <fabien@symfony.com>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace Symfony\Component\Form\Extension\HttpFoundation;use Symfony\Component\Form\Exception\UnexpectedTypeException;use Symfony\Component\Form\FormError;use Symfony\Component\Form\FormInterface;use Symfony\Component\Form\RequestHandlerInterface;use Symfony\Component\Form\Util\ServerParams;use Symfony\Component\HttpFoundation\File\File;use Symfony\Component\HttpFoundation\File\UploadedFile;use Symfony\Component\HttpFoundation\Request;/*** A request processor using the {@link Request} class of the HttpFoundation* component.** @author Bernhard Schussek <bschussek@gmail.com>*/class HttpFoundationRequestHandler implements RequestHandlerInterface{private ServerParams $serverParams;public function __construct(ServerParams $serverParams = null){$this->serverParams = $serverParams ?? new ServerParams();}public function handleRequest(FormInterface $form, mixed $request = null){if (!$request instanceof Request) {throw new UnexpectedTypeException($request, Request::class);}$name = $form->getName();$method = $form->getConfig()->getMethod();if ($method !== $request->getMethod()) {return;}// For request methods that must not have a request body we fetch data// from the query string. Otherwise we look for data in the request body.if ('GET' === $method || 'HEAD' === $method || 'TRACE' === $method) {if ('' === $name) {$data = $request->query->all();} else {// Don't submit GET requests if the form's name does not exist// in the requestif (!$request->query->has($name)) {return;}$data = $request->query->all()[$name];}} else {// Mark the form with an error if the uploaded size was too large// This is done here and not in FormValidator because $_POST is// empty when that error occurs. Hence the form is never submitted.if ($this->serverParams->hasPostMaxSizeBeenExceeded()) {// Submit the form, but don't clear the default values$form->submit(null, false);$form->addError(new FormError($form->getConfig()->getOption('upload_max_size_message')(),null,['{{ max }}' => $this->serverParams->getNormalizedIniPostMaxSize()]));return;}if ('' === $name) {$params = $request->request->all();$files = $request->files->all();} elseif ($request->request->has($name) || $request->files->has($name)) {$default = $form->getConfig()->getCompound() ? [] : null;$params = $request->request->all()[$name] ?? $default;$files = $request->files->get($name, $default);} else {// Don't submit the form if it is not present in the requestreturn;}if (\is_array($params) && \is_array($files)) {$data = array_replace_recursive($params, $files);} else {$data = $params ?: $files;}}// Don't auto-submit the form unless at least one field is present.if ('' === $name && \count(array_intersect_key($data, $form->all())) <= 0) {return;}$form->submit($data, 'PATCH' !== $method);}public function isFileUpload(mixed $data): bool{return $data instanceof File;}public function getUploadFileError(mixed $data): ?int{if (!$data instanceof UploadedFile || $data->isValid()) {return null;}return $data->getError();}}