it-swarm-vi.com

Phần tử biểu mẫu "#markup" không thể có con

Tôi có biểu mẫu của mình, nhưng bất kỳ phần tử con nào của phần tử "#markup" sẽ không xuất hiện khi biểu mẫu được hiển thị.

$form['html'] = array(
  '#type' => 'markup',
  '#markup' => '<h2>My Heading</h2>',
  '#tree' => true,
);

$form['html']['element'] = array(
  '#type' => 'textfield',
  '#title' => 'Foo',
);

Trong ví dụ này, trường mẫu "phần tử" sẽ không được hiển thị.

Đây có phải là lỗi Drupal, hay tôi cần phải làm gì đó cụ thể?

7
user1589

Không thể sử dụng "#tree" với phần tử "#markup" có vẻ là một lỗi của Drupal, vì trang tham chiếu cho báo cáo API biểu mẫu rằng "#tree" được hỗ trợ bởi phần tử "#markup" .

Như cách giải quyết, bạn cũng có thể sử dụng thuộc tính "#prefix", như trong đoạn mã sau:

$form['html']['element'] = array(
  '#type' => 'textfield',
  '#title' => 'Foo',
  '#prefix' => '<h2>My Heading</h2>',
);

Nếu nó không được hiển thị như bạn mong đợi, thì bạn có thể chỉ cần xóa "#tree" khỏi mã của mình, điều này dường như không cần thiết, nếu tất cả những gì bạn muốn là hiển thị <h2>My Heading</h2> tag trước các trường mẫu. API biểu mẫu biểu hiện các phần tử theo thứ tự chúng xuất hiện trong mảng; nếu bạn muốn thay đổi thứ tự, bạn có thể sử dụng thuộc tính " # weight ".

$form['html'] = array(
 '#type' => 'markup',
 '#markup' => '<h2>My Heading</h2>',
);

$form['html']['element'] = array(
  '#type' => 'textfield',
  '#title' => 'Foo',
);
8
kiamlaluno

Nói chính xác hơn một chút, những đứa trẻ của #markup phần tử loại không được hiển thị. Chúng được xử lý cho mục đích hình thức, mặc dù.

1
user49