Version 1
[yaffs-website] / web / core / modules / system / tests / modules / form_test / src / Controller / FormTestController.php
diff --git a/web/core/modules/system/tests/modules/form_test/src/Controller/FormTestController.php b/web/core/modules/system/tests/modules/form_test/src/Controller/FormTestController.php
new file mode 100644 (file)
index 0000000..4c9fbe2
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+namespace Drupal\form_test\Controller;
+
+use Drupal\Core\Controller\ControllerBase;
+use Drupal\Core\Form\FormState;
+use Drupal\Core\Language\LanguageInterface;
+use Symfony\Component\HttpFoundation\JsonResponse;
+
+/**
+ * Controller routines for form_test routes.
+ */
+class FormTestController extends ControllerBase {
+
+  /**
+   * Returns two instances of the node form.
+   *
+   * @return string
+   *   A HTML-formatted string with the double node form page content.
+   */
+  public function twoFormInstances() {
+    $user = $this->currentUser();
+    $values = [
+      'uid' => $user->id(),
+      'name' => $user->getUsername(),
+      'type' => 'page',
+      'langcode' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+    ];
+    $node1 = $this->entityManager()->getStorage('node')->create($values);
+    $node2 = clone($node1);
+    $return['node_form_1'] = $this->entityFormBuilder()->getForm($node1);
+    $return['node_form_2'] = $this->entityFormBuilder()->getForm($node2);
+    return $return;
+  }
+
+  /**
+   * Emulate legacy AHAH-style ajax callback.
+   *
+   * Drupal 6 AHAH callbacks used to operate directly on forms retrieved using
+   * \Drupal::formBuilder()->getCache() and stored using
+   * \Drupal::formBuilder()->setCache() after manipulation. This callback helps
+   * testing whether \Drupal::formBuilder()->setCache() prevents resaving of
+   * immutable forms.
+   */
+  public function storageLegacyHandler($form_build_id) {
+    $form_state = new FormState();
+    $form = $this->formBuilder()->getCache($form_build_id, $form_state);
+    $result = [
+      'form' => $form,
+      'form_state' => $form_state,
+    ];
+    $form['#poisoned'] = TRUE;
+    $form_state->set('poisoned', TRUE);
+    $this->formBuilder()->setCache($form_build_id, $form, $form_state);
+    return new JsonResponse($result);
+  }
+
+}