Doresc să afișez formularul de înregistrare într-un mod.
Pentru asta, am creat un bloc de plugin personalizat care returnează redarea registrului formularului.
/**
* {@inheritdoc}
*/
public function build() {
$entity = \Drupal::entityTypeManager()->getStorage('user')->create(array());
$formObject = \Drupal::entityTypeManager()
->getFormObject('utilizator', 'înregistrare')
->setEntity($entity);
returnează $this->formBuilder->getForm($formObject);
}
/**
* {@inheritdoc}
*/
bloc de funcții protejatAcces(AccountInterface $cont) {
dacă ($cont->esteAnonim()) {
returnează AccessResult::allowed()
->addCacheContexts(['route.name', 'user.roles:anonymous']);
}
returnează AccessResult::interzis();
}
Folosesc comanda ajax pentru procesul de redare modală și am acest cod:
// Creați o instanță a blocului.
$plugin_block = $this->blockManager->createInstance($block_id);
// Unele blocuri ar putea implementa verificarea accesului.
$access_result = $plugin_block->access($this->currentUser);
// Returnează matricea de randare goală dacă utilizatorul nu are acces.
// $access_result poate fi boolean sau o clasă AccessResult.
if (este_obiect($access_result) && $access_result->isForbidden() || is_bool($access_result) && !$access_result) {
$conținut_modal = "";
}
else {
$build_block = $plugin_block->build();
$conținut_modal = $this->renderer->render($build_block);
}
Problema mea este că blocul este bine redat în modal cu formularul dar că forma nu funcționează. Și când am făcut o comparație cu o redare normală a blocului (de exemplu, direct într-o regiune a paginii prin aspectul blocului admin), diferența este că în redarea modală, am cum action="form_action_p_pvdeGsVG5zNF_XLGPTvYSKCf43t8qZYSwcfZl2uzM"
Are cineva o idee sau o solutie mai buna?