Cách lập trình biểu hiện một biểu mẫu liên hệ trong một chủ đề trong D8 theo chương trình


8

Làm cách nào để có được biểu mẫu liên hệ rộng bên (phản hồi) được hiển thị riêng lẻ trong một khối tùy chỉnh hoặc trang khác sau đó / contact (ví dụ: frontpage)?

Tôi đã thử mã này, nhưng nó không hoạt động (là các thực thể biểu mẫu liên hệ?):

// get default form
// get the entity object
$default_form = \Drupal::config('contact.settings')->get('default_form');
$entity = \Drupal::entityManager()->getStorage('contact_form')->load($default_form);

// get view builder
// render view
$view_builder = \Drupal::entityManager()->getViewBuilder('contact_form');
$full_output = $view_builder->view($entity);

THÔNG TIN: 1) biểu mẫu liên hệ trên toàn mặc định (phản hồi) là một thực thể (không phải là biểu mẫu đăng nhập). 2) entityManagerkhông được ủng hộ entityTypeManager( tài liệu API )
nilsun

Tôi muốn đề cập đến một câu hỏi D8 chính mới để giúp đỡ với tất cả các câu hỏi phụ như thế này đây, do câu hỏi cơ bản mở, cũng ghi nhận ở đây trong chi tiết: drupal.stackexchange.com/questions/197149/...
nilsun

Câu trả lời:


6

Hình thức liên lạc là một thực thể, nhưng bạn không thể xem nó.

Thay vào đó, những gì bạn muốn là một hình thức thêm của contact_message với contact_form dưới dạng gói.

Xem ContactController::contactSitePage()(EDIT: tài liệu API ) làm ví dụ:

$message = \Drupal::entityTypeManager()
  ->getStorage('contact_message')
  ->create(array(
    'contact_form' => $contact_form->id(),
  ));

// This works in a controller, use \Drupal::service('entity.form_builder') elsewhere.
$form = $this->entityFormBuilder()->getForm($message);
$form['#title'] = SafeMarkup::checkPlain($contact_form->label());

EDIT (cảm ơn @nilsun): Lưu ý rằng entityManager không được hỗ trợ cho entityTypeManager.


THÔNG TIN: entityManagerkhông được ủng hộ entityTypeManager( tài liệu API ) và một số liên kết bị thiếu ở đây trong câu trả lời. Trong câu trả lời có ghi: Xem ContactController::contactSitePage() ví dụ. Nó đâu rồi? Đây có phải là một trang tài liệu trên Drupal.org? Nó có phải là một chức năng trong cốt lõi? Làm thế nào để thực hiện điều này trong một hàm tiền xử lý vì câu hỏi là về .theme? Mọi thứ đã thay đổi vào cuối năm ngoái và thiếu thông tin về lõi D8 cuối cùng liên quan đến các câu hỏi như vậy trong hầu hết các câu trả lời.
nilsun

Tôi muốn đề cập đến một câu hỏi D8 chính mới để giúp đỡ với tất cả các câu hỏi phụ như thế này đây, do câu hỏi cơ bản mở, cũng ghi nhận ở đây trong chi tiết: drupal.stackexchange.com/questions/197149/...
nilsun

Chuỗi :: checkPlain hiện là SafeMarkup :: checkPlain
pcambra

1
@pcambra Cảm ơn, lưu ý rằng bất cứ ai cũng có thể cập nhật câu trả lời, bạn chỉ có thể tự sửa một cái gì đó như thế.
Berdir
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.