Điểm:0

Sau khi hiển thị biểu mẫu thực thể, có thể sửa đổi như thế nào?

lá cờ br

Tôi hiển thị biểu mẫu thực thể tùy chỉnh với mã sau:

$form = $this->entityFormBuilder->getForm($entity, 'array_delimiter');

Điều này là hoàn hảo, vì nó hiển thị những gì tôi đặt trên màn hình biểu mẫu. Tuy nhiên, khi tôi cố gắng thêm chức năng gọi lại gửi mới (tức là $form['actions']['submit']['#submit'][] = 'custom_callback';) thì điều này không được gọi.
Khi tôi cố gắng ẩn một số mục biểu mẫu, tôi sẽ mất dữ liệu của chúng. (I E. $form['status']['#access'] = FALSE;).

Nhưng khi tôi làm tất cả những điều này trong một hook_form_FORM_ID_alter nó hoạt động như mong đợi. Cuộc gọi lại đang được gọi trong khi các giá trị phần tử biểu mẫu ẩn không bị mất.

Có cách nào để làm điều này mà không cần thêm hook_form_FORM_ID_alter?

Kevin avatar
lá cờ in
Bạn không thể thêm nó vào đó, vì các chức năng của trình tạo không biết về mã đã thêm của bạn. Vì vậy, bạn cần có móc thay đổi.
Jaypan avatar
lá cờ de
Điều này nên được thực hiện trong một hook form_alter.
lá cờ br
Không, tôi không cần form_alter, tôi chỉ cần mở rộng đối tượng kết xuất biểu mẫu và đặt mọi thứ ở đó và cung cấp đối tượng đó thay vì bản gốc khi tôi đặt đối tượng kết xuất cho màn hình `array_delimiter`
Kevin avatar
lá cờ in
Bạn đã không đề cập đến điều đó.
Điểm:1
lá cờ cn

Các biểu mẫu được hiển thị trong ba giai đoạn:

  1. Cấu trúc của biểu mẫu được xây dựng trong FormInterface::buildForm. Kết quả có thể được thay đổi trong hook_form_alter().

  2. Các yếu tố hình thức được xử lý. Chỉ có thể gửi các phần tử biểu mẫu được xử lý.

  3. Mảng kết xuất cuối cùng của biểu mẫu được kết xuất.

Mặc dù cái tên Trình tạo Mẫu không chỉ xây dựng các phần tử biểu mẫu mà còn xử lý chúng để chúng sẵn sàng hiển thị. Các phần tử biểu mẫu phức tạp hơn yêu cầu bước này vì cấu trúc hiển thị cuối cùng được tạo trong lệnh gọi lại # process. Nhưng ngay cả các phần tử biểu mẫu đơn giản hiển thị tốt mà không cần xử lý cũng không thể gửi được.

lá cờ br
Aha, vì vậy cách giải quyết duy nhất cho việc này là mở rộng lớp biểu mẫu ban đầu và thay vì đưa đối tượng biểu mẫu ban đầu làm đối tượng kết xuất, tôi đưa ra biểu mẫu mở rộng của mình. Do đó điểm 2 và 3 chưa chạy khi tôi thay đổi một số giá trị của biểu mẫu.
lá cờ br
Có, và nó hoạt động, bởi vì dù sao tôi cũng cần xác định đối tượng kết xuất của màn hình biểu mẫu mới, tôi có thể mở rộng đối tượng hiện có để thêm vào đó hàm gọi lại và các trường bổ sung, như thế này không có mã ngẫu nhiên ở mọi nơi.
4uk4 avatar
lá cờ cn
Vâng, đây là cách đơn giản nhất. Đặt lớp biểu mẫu mở rộng làm trình xử lý biểu mẫu trong chú thích loại thực thể.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.