Как спрятать поле в друпальной форме - PullRequest
5 голосов
/ 16 декабря 2010

У меня есть определенный тип контента в drupal6. Я хочу реализовать хук, который скрывает поле body этого типа контента от формы добавления, но не от формы редактирования. Как я могу это сделать?

Ответы [ 4 ]

9 голосов
/ 15 марта 2011

unset также уничтожает значение, как и свойство #access.Я просто использую это, чтобы скрыть поле (в данном случае это ссылка, если она была задана с помощью URL:

$form['field_reference']['#prefix'] = "<div class='hide'>";
$form['field_reference']['#suffix'] = "</div>";
9 голосов
/ 16 декабря 2010

Вы можете использовать hook_form_alter.Который вы можете программно изменить содержимое формы API сборки.Это дает вам полный массив $ form, из которого вы можете просто unset($form['the_field_you_dont_want']);.

Но более простой способ избавиться от поля тела в типе редактируемого содержимого - это поле с меткой «Метка поля тела:», просто оставьте это поле пустым, и поле тела будет опущено.

6 голосов
/ 25 мая 2013

Решение, найденное здесь https://drupal.stackexchange.com/questions/11237/hide-field-in-node-add-page прекрасно работает для меня.Здесь я повторяю решение moon.watcher:

function test_remove_filed_form_alter(&$form, &$form_state) {

    if (arg(0) == 'node' && arg(1) == 'add') {
    $form['field_test']['#access'] = 0;
    }

}

Недостаток использования unset () состоит в том, что он полностью удалит поле, и вы не сможете дальше, как, например, при предварительном сохранении узла.В моем случае я просто хотел удалить поле из формы в первый момент, но я хотел заполнить его позже, перед сохранением узла.Решение по приведенной выше ссылке идеально подходит для меня по этой причине.

1 голос
/ 16 декабря 2010

Реализовали ли вы тип контента в модуле (используя hook_node_info)?Если это так, установите для атрибута has_body значение false.

...