it-swarm-vi.com

chỉ định các phần tử $ form được loại trừ khỏi màn hình?

Tôi muốn ẩn các thành phần nhất định trong biểu mẫu bằng form_alter hoặc tệp mẫu. Tôi đã đọc ở đâu đó rằng trong Drupal 7, chúng ta có thể chỉ định các phần tử $ form để nó không hiển thị dưới dạng, nhưng tôi không thể nhớ! Không bỏ qua () mà là một số chức năng khác!

19
Serjas

Sử dụng unset() không phải là một giải pháp tốt cho các biểu mẫu (như tôi nghĩ bạn biết), vì bạn không bao giờ biết trình xử lý trình/xác thực nào có thể mong đợi phần tử unset tồn tại khi chúng được xử lý. Điều này có thể dẫn đến các lỗi không mong muốn.

Có ba phương pháp bạn có thể sử dụng một cách an toàn để 'ẩn' một phần tử biểu mẫu

  • Sử dụng '#type' => 'value' Trên phần tử, điều này sẽ có tác dụng là giá trị cho phần tử vẫn sẽ được chuyển qua các hàm gửi/xác thực với #value Như bình thường. Đây là phương pháp ưa thích của tôi.
  • Sử dụng '#access' => FALSE Trên phần tử để biểu thị nó không được xuất ra màn hình.
  • Sử dụng '#type' => 'hidden' Như Bart đã đề xuất (mặc dù việc sử dụng tùy thuộc vào trường hợp sử dụng của bạn; tôi tưởng tượng nếu bạn đang cố gắng ẩn giá trị của một phần tử biểu mẫu mà bạn không muốn xuất nó dưới dạng đầu vào ẩn).
29
Clive

Nếu bạn đang sử dụng tệp mẫu, bạn có thể ẩn nội dung bằng cách sử dụng hide () .

Nếu bạn muốn ẩn một phần tử biểu mẫu trong hook_form_alter, unset() có thể là tùy chọn tốt nhất của bạn.

Nếu đó chỉ là để lưu trữ một giá trị bạn có thể sử dụng '# type' => 'hidden' .

4
Bart

Tôi đã tìm thấy bằng cách sử dụng #access thành false có thể phá vỡ một số biểu mẫu nếu được sử dụng trên các nút gửi hoặc tương tự. Trong những trường hợp đó, tôi chỉ sử dụng CSS để ẩn các phần tử:

$form['basic']['submit']['#attributes']['class'][] = 'element-hidden';

Chỉ là một lựa chọn khác.

4
Tom James