formBuilder = $formBuilder; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('form_builder') ); } private function getFormDefinition(){ // http://web-tricks.org/content/how-render-user-login-form-and-user-register-form-drupal-8 $entity = \Drupal::entityTypeManager() ->getStorage('user') ->create(array()); // to use modal form display see materio_user_entity_type_build() $formObject = \Drupal::entityTypeManager() ->getFormObject('user', 'modal') ->setEntity($entity); $this->form_builded = $this->formBuilder()->getForm($formObject); } /** * Handler for getform request. */ public function getForm(Request $request) { $this->getFormDefinition(); $rendered = 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; } }