Элемент формы "#markup" не может иметь детей

У меня есть моя форма, но любой дочерний элемент "#markup" не будет отображаться при визуализации формы.

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

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

В этом примере поле формы «элемент» не будет отображаться.

Является ли это ошибкой Drupal, или мне нужно сделать что-то конкретное?

7 голосов | спросил user1589 25 PM00000090000002631 2011, 21:47:26

1 ответ


7

Невозможность использовать «#tree» с элементом «#markup» кажется ошибкой Drupal, поскольку ссылочную страницу для отчетов API формы, которые" #tree "поддерживается элементом" #markup ".

В качестве обходного пути вы также можете использовать свойство «#prefix», как в следующем коде:

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

Если он не отображается, как вы ожидаете, вы можете просто удалить «#tree» из своего кода, который, похоже, не нужен, если все, что вам нужно, - это сделать <h2>My Heading</h2> перед полями формы. API формы отображает элементы, следующие за порядком, который они отображаются в массиве; если вы хотите изменить порядок, вы можете использовать #weight ".

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

$form['html']['element'] = array(
  '#type' => 'textfield',
  '#title' => 'Foo',
);
ответил kiamlaluno 25 PM000000110000004831 2011, 23:12:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132