| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | <?php// https://www.qed42.com/blog/autocomplete-drupal-8// https://www.drupal.org/docs/8/modules/search-api/developer-documentation/executing-a-search-in-codenamespace Drupal\materio_user\Controller;use Drupal\Core\Controller\ControllerBase;use Symfony\Component\DependencyInjection\ContainerInterface;use Drupal\Core\Form\FormBuilder;use Drupal\Core\Form\FormState;use Symfony\Component\HttpFoundation\JsonResponse;use Symfony\Component\HttpFoundation\Request;// use Drupal\Core\Cache\CacheableJsonResponse;// use Drupal\Core\Cache\CacheableMetadata;use Drupal\core\render\RenderContext;/** * Defines a route controller for entity autocomplete form elements. */class AjaxLoginForm extends ControllerBase {  /**   * The form builder.   *   * @var \Drupal\Core\Form\FormBuilder   */  protected $formBuilder;  /**   * Construct.   */  public function __construct(FormBuilder $formBuilder) {    $this->formBuilder = $formBuilder;  }  /**   * {@inheritdoc}   */  public static function create(ContainerInterface $container) {    return new static(      $container->get('form_builder')    );  }  private function getFormDefinition(){    $language = \Drupal::languageManager()->getCurrentLanguage()->getId();    $this->form_builded = $this->formBuilder->getForm('Drupal\user\Form\UserLoginForm');  }  /**   * Handler for getform request.   */  public function getForm(Request $request) {    $this->getFormDefinition();    // $rendered = render($this->form_builded);    $rendered = \Drupal::service('renderer')->render($this->form_builded);    // $form_builded = $this->form_builded;    // $rendered = \Drupal::service('renderer')->executeInRenderContext(new RenderContext(), function () use ($form_builded) {    //     return render($form_builded);    //   });    $data = [      'rendered' => $rendered,      // '#cache' => [      //   'max-age' => \Drupal\Core\Cache\Cache::PERMANENT,      //   'tags' => [      //     'materio_sapi-search_form-cache',      //   ]      // ]    ];    $response = new JsonResponse();    $response->setData($data);    // $response = new CacheableJsonResponse($data);    // $response->addCacheableDependency(CacheableMetadata::createFromRenderArray($data));    return $response;  }}
 |