Tôi muốn hiển thị biểu mẫu đăng ký theo phương thức.
Để làm được điều đó, tôi đã tạo một khối plugin tùy chỉnh trả về kết xuất của thanh ghi biểu mẫu.
/**
* {@inheritdoc}
*/
xây dựng chức năng công cộng () {
$entity = \Drupal::entityTypeManager()->getStorage('user')->create(array());
$formObject = \Drupal::entityTypeManager()
->getFormObject('người dùng', 'đăng ký')
->setEntity($entity);
trả về $this->formBuilder->getForm($formObject);
}
/**
* {@inheritdoc}
*/
chức năng được bảo vệ blockAccess(AccountInterface $account) {
if ($account->isAnonymous()) {
trả về AccessResult::allowed()
->addCacheContexts(['route.name', 'user.roles:anonymous']);
}
trả về AccessResult::forbidden();
}
Tôi đang sử dụng lệnh ajax cho quy trình hiển thị phương thức và trong đó tôi có mã này:
// Tạo một thể hiện của khối.
$plugin_block = $this->blockManager->createInstance($block_id);
// Một số khối có thể thực hiện kiểm tra quyền truy cập.
$access_result = $plugin_block->access($this->currentUser);
// Trả về mảng kết xuất trống nếu người dùng không có quyền truy cập.
// $access_result có thể là boolean hoặc một lớp AccessResult.
if (is_object($access_result) && $access_result->isForbidden() || is_bool($access_result) && !$access_result) {
$modal_content = "";
}
khác {
$build_block = $plugin_block->build();
$modal_content = $this->renderer->render($build_block);
}
Vấn đề của tôi là khối được hiển thị tốt theo phương thức có dạng nhưng biểu mẫu đó không hoạt động. Và khi tôi so sánh với kết xuất bình thường của khối (ví dụ: trực tiếp trong một vùng của trang thông qua bố cục khối quản trị), sự khác biệt là trong kết xuất theo phương thức, tôi đã thích action="form_action_p_pvdeGsVG5zNF_XLGPTvYSKCf43t8qZYSwcfZl2uzM"
Bất cứ ai có một ý tưởng hoặc một giải pháp tốt hơn?