Могу ли я пропустить <? Php drupal_render ($ form);?>
Я заметил, что в вашем файле темы формы, независимо от-form.tpl.php, когда вы пропустите
<?php drupal_render($form); ?>
единственные части формы, которые отображаются, - это то, что вы указали, поэтому я также могу опустить все эти строки:
<?php $form['title']['#access'] = FALSE; ?>
<?php $form['body']['#access'] = FALSE; ?>
<?php $form['menu']['#access'] = FALSE; ?>
<?php $form['revision_information']['#access'] = FALSE; ?>
<?php /* ... etc ... */ ?>
Я хотел сделать это так, чтобы при установке модулей (скажем, "Книги") мне не приходилось возвращаться ко всем моим пользовательским формам, а затем добавлять соответствующие "скрыть этот раздел!" линия:
<?php $form['book']['#access'] = FALSE; ?>
Можно ли опустить drupal_render($form)? Представление, проверка и т. Д. Будут в порядке?
3 ответа
Строка, которую вы запрашиваете, отображает все элементы формы, которые еще не были отображены. Это, скорее всего, всегда будет включать в себя маркер формы уникальный идентификатор для формы. Без этого форма не может подтвердить. Это может вызвать много проблем, если удалить.
Если вы хотите изменить форму, вы должны использовать hook_form_alter()
, Это позволяет вам на основе идентификатора формы удалять / добавлять / изменять элементы формы. Это способ Drupal, поскольку он позволяет другим модулям изменять формы при необходимости, а также.
Краткий ответ однозначно - нет, вы не можете опустить drupal_render($form), потому что он содержит информацию, необходимую для правильной обработки формы.
Ну, какая бы тема вы ни использовали, она кажется немного странной, потому что каждая строка кода, которую вы перечислили выше, не должна быть на уровне тем.
Но ответить на ваш вопрос, удалив drupal_render($form)
вероятно, приведет к тому, что вся ваша форма не появится. Так что нет, отправка и проверка и так далее не будут работать, и форма, вероятно, даже не будет отображаться на странице при ее отображении в браузере.