Loading core/lib/Drupal/Core/Form/FormBuilder.php +2 −2 Original line number Diff line number Diff line Loading @@ -327,7 +327,7 @@ public function buildForm($form_arg, FormStateInterface &$form_state) { // In case the post request exceeds the configured allowed size // (post_max_size), the post request is potentially broken. Add some // protection against that and at the same time have a nice error message. if ($ajax_form_request && !$request->request->has('form_id')) { if ($ajax_form_request && !$request->get('form_id')) { throw new BrokenPostRequestException($this->getFileUploadMaxSize()); } Loading @@ -340,7 +340,7 @@ public function buildForm($form_arg, FormStateInterface &$form_state) { // build a proper AJAX response. // Only do this when the form ID matches, since there is no guarantee from // $ajax_form_request that it's an AJAX request for this particular form. if ($ajax_form_request && $form_state->isProcessingInput() && $request->request->get('form_id') == $form_id) { if ($ajax_form_request && $form_state->isProcessingInput() && $request->get('form_id') == $form_id) { throw new FormAjaxException($form, $form_state); } Loading core/tests/Drupal/Tests/Core/Form/FormBuilderTest.php +25 −1 Original line number Diff line number Diff line Loading @@ -595,7 +595,7 @@ public function testExceededFileSize() { /** * @covers ::buildForm */ public function testGetPostAjaxRequest() { public function testPostAjaxRequest(): void { $request = new Request([FormBuilderInterface::AJAX_FORM_REQUEST => TRUE], ['form_id' => 'different_form_id']); $request->setMethod('POST'); $this->requestStack->push($request); Loading @@ -615,6 +615,30 @@ public function testGetPostAjaxRequest() { $this->assertSame('test-form', $form['#id']); } /** * @covers ::buildForm */ public function testGetAjaxRequest(): void { $request = new Request([FormBuilderInterface::AJAX_FORM_REQUEST => TRUE]); $request->query->set('form_id', 'different_form_id'); $request->setMethod('GET'); $this->requestStack->push($request); $form_state = (new FormState()) ->setUserInput([FormBuilderInterface::AJAX_FORM_REQUEST => TRUE]) ->setMethod('get') ->setAlwaysProcess() ->disableRedirect() ->set('ajax', TRUE); $form_id = '\Drupal\Tests\Core\Form\TestForm'; $expected_form = (new TestForm())->buildForm([], $form_state); $form = $this->formBuilder->buildForm($form_id, $form_state); $this->assertFormElement($expected_form, $form, 'test'); $this->assertSame('test-form', $form['#id']); } /** * @covers ::buildForm * Loading Loading
core/lib/Drupal/Core/Form/FormBuilder.php +2 −2 Original line number Diff line number Diff line Loading @@ -327,7 +327,7 @@ public function buildForm($form_arg, FormStateInterface &$form_state) { // In case the post request exceeds the configured allowed size // (post_max_size), the post request is potentially broken. Add some // protection against that and at the same time have a nice error message. if ($ajax_form_request && !$request->request->has('form_id')) { if ($ajax_form_request && !$request->get('form_id')) { throw new BrokenPostRequestException($this->getFileUploadMaxSize()); } Loading @@ -340,7 +340,7 @@ public function buildForm($form_arg, FormStateInterface &$form_state) { // build a proper AJAX response. // Only do this when the form ID matches, since there is no guarantee from // $ajax_form_request that it's an AJAX request for this particular form. if ($ajax_form_request && $form_state->isProcessingInput() && $request->request->get('form_id') == $form_id) { if ($ajax_form_request && $form_state->isProcessingInput() && $request->get('form_id') == $form_id) { throw new FormAjaxException($form, $form_state); } Loading
core/tests/Drupal/Tests/Core/Form/FormBuilderTest.php +25 −1 Original line number Diff line number Diff line Loading @@ -595,7 +595,7 @@ public function testExceededFileSize() { /** * @covers ::buildForm */ public function testGetPostAjaxRequest() { public function testPostAjaxRequest(): void { $request = new Request([FormBuilderInterface::AJAX_FORM_REQUEST => TRUE], ['form_id' => 'different_form_id']); $request->setMethod('POST'); $this->requestStack->push($request); Loading @@ -615,6 +615,30 @@ public function testGetPostAjaxRequest() { $this->assertSame('test-form', $form['#id']); } /** * @covers ::buildForm */ public function testGetAjaxRequest(): void { $request = new Request([FormBuilderInterface::AJAX_FORM_REQUEST => TRUE]); $request->query->set('form_id', 'different_form_id'); $request->setMethod('GET'); $this->requestStack->push($request); $form_state = (new FormState()) ->setUserInput([FormBuilderInterface::AJAX_FORM_REQUEST => TRUE]) ->setMethod('get') ->setAlwaysProcess() ->disableRedirect() ->set('ajax', TRUE); $form_id = '\Drupal\Tests\Core\Form\TestForm'; $expected_form = (new TestForm())->buildForm([], $form_state); $form = $this->formBuilder->buildForm($form_id, $form_state); $this->assertFormElement($expected_form, $form, 'test'); $this->assertSame('test-form', $form['#id']); } /** * @covers ::buildForm * Loading