Я хочу отобразить форму регистрации в модальном режиме.
Для этого я создал собственный блок плагинов, который возвращает рендеринг регистра формы.
/**
* {@inheritdoc}
*/
общедоступная функция сборки () {
$entity = \Drupal::entityTypeManager()->getStorage('user')->create(array());
$formObject = \Drupal::entityTypeManager()
->getFormObject('пользователь', 'зарегистрироваться')
->setEntity($entity);
вернуть $this->formBuilder->getForm($formObject);
}
/**
* {@inheritdoc}
*/
защищенная функция blockAccess(AccountInterface $account) {
если ($account->isAnonymous()) {
вернуть AccessResult::allowed()
->addCacheContexts(['route.name', 'user.roles:anonymous']);
}
вернуть AccessResult::forbidden();
}
Я использую команду ajax для процесса модального рендеринга, и в ней у меня есть этот код:
// Создаем экземпляр блока.
$plugin_block = $this->blockManager->createInstance($block_id);
// Некоторые блоки могут реализовывать проверку доступа.
$access_result = $plugin_block->access($this->currentUser);
// Возвращаем пустой массив рендеринга, если у пользователя нет доступа.
// $access_result может быть логическим значением или классом AccessResult.
if (is_object($access_result) && $access_result->isForbidden() || is_bool($access_result) && !$access_result) {
$modal_content = "";
}
еще {
$build_block = $plugin_block->build();
$modal_content = $this->renderer->render($build_block);
}
Моя проблема в том, что блок хорошо отображается в модальном виде с формой но форма не работает. И когда я сделал сравнение с обычным рендерингом блока (например, непосредственно в области страницы через макет блока администратора), разница в том, что в модальном рендеринге у меня как action="form_action_p_pvdeGsVG5zNF_XLGPTvYSKCf43t8qZYSwcfZl2uzM"
У кого-нибудь есть идея или лучшее решение?