Могу ли я пропустить <? Php drupal_render ($ form); ?> - PullRequest
0 голосов
/ 22 декабря 2009

Я заметил, что в вашем файле темы формы, what-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 ]

2 голосов
/ 23 декабря 2009

Строка, которую вы запрашиваете, отображает все элементы формы, которые еще не были отображены. Это, скорее всего, всегда будет включать в себя маркер формы уникальный идентификатор для формы. Без этого форма не может подтвердить. В случае удаления это может привести к большим проблемам.

Если вы хотите изменить форму, вы должны использовать hook_form_alter(). Это позволяет вам на основе идентификатора формы удалять / добавлять / изменять элементы формы. Это способ Drupal, поскольку он позволяет другим модулям изменять формы при необходимости, а также.

1 голос
/ 23 декабря 2009

Короткий ответ определенно - нет, вы не можете опустить drupal_render ($ form), поскольку он содержит информацию, необходимую для правильной обработки формы.

1 голос
/ 22 декабря 2009

Ну, какая бы тема вы ни использовали, она кажется немного странной, потому что каждая строка кода, которую вы перечислили выше, не должна находиться в слое тем.

Но чтобы ответить на ваш вопрос, удаление drupal_render($form), вероятно, приведет к тому, что вся ваша форма не будет отображаться. Так что нет, отправка, проверка и прочее не будут работать, и форма, вероятно, вообще не будет отображаться на странице при ее отображении в браузере.

...