AjaxLoginForm.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. // https://www.qed42.com/blog/autocomplete-drupal-8
  3. // https://www.drupal.org/docs/8/modules/search-api/developer-documentation/executing-a-search-in-code
  4. namespace Drupal\materio_user\Controller;
  5. use Drupal\Core\Controller\ControllerBase;
  6. use Symfony\Component\DependencyInjection\ContainerInterface;
  7. use Drupal\Core\Form\FormBuilder;
  8. use Drupal\Core\Form\FormState;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. // use Drupal\Core\Cache\CacheableJsonResponse;
  12. // use Drupal\Core\Cache\CacheableMetadata;
  13. use Drupal\core\render\RenderContext;
  14. /**
  15. * Defines a route controller for entity autocomplete form elements.
  16. */
  17. class AjaxLoginForm extends ControllerBase {
  18. /**
  19. * The form builder.
  20. *
  21. * @var \Drupal\Core\Form\FormBuilder
  22. */
  23. protected $formBuilder;
  24. /**
  25. * Construct.
  26. */
  27. public function __construct(FormBuilder $formBuilder) {
  28. $this->formBuilder = $formBuilder;
  29. }
  30. /**
  31. * {@inheritdoc}
  32. */
  33. public static function create(ContainerInterface $container) {
  34. return new static(
  35. $container->get('form_builder')
  36. );
  37. }
  38. private function getFormDefinition(){
  39. $language = \Drupal::languageManager()->getCurrentLanguage()->getId();
  40. $this->form_builded = $this->formBuilder->getForm('Drupal\user\Form\UserLoginForm');
  41. }
  42. /**
  43. * Handler for getform request.
  44. */
  45. public function getForm(Request $request) {
  46. $this->getFormDefinition();
  47. // $rendered = render($this->form_builded);
  48. $rendered = \Drupal::service('renderer')->render($this->form_builded);
  49. // $form_builded = $this->form_builded;
  50. // $rendered = \Drupal::service('renderer')->executeInRenderContext(new RenderContext(), function () use ($form_builded) {
  51. // return render($form_builded);
  52. // });
  53. $data = [
  54. 'rendered' => $rendered,
  55. // '#cache' => [
  56. // 'max-age' => \Drupal\Core\Cache\Cache::PERMANENT,
  57. // 'tags' => [
  58. // 'materio_sapi-search_form-cache',
  59. // ]
  60. // ]
  61. ];
  62. $response = new JsonResponse();
  63. $response->setData($data);
  64. // $response = new CacheableJsonResponse($data);
  65. // $response->addCacheableDependency(CacheableMetadata::createFromRenderArray($data));
  66. return $response;
  67. }
  68. }