Как вывести программно форму в Drupal 7?

Главные вкладки

Аватар пользователя igorek igorek 1 марта 2011 в 18:29

Это для 6-ки
<?php
module_load_include('inc', 'contact', 'contact.pages');
echo drupal_get_form('contact_mail_page');
?>

для 7-ки это выводит массив
<?php
module_load_include('inc', 'contact', 'contact.pages');
echo drupal_get_form('contact_site_form');
?>

было всё просто http://api.drupal.org/api/drupal/includes--form.inc/group/form_api/6
а это не очень понятно http://api.drupal.org/api/drupal/includes--form.inc/group/form_api/7

Комментарии

Аватар пользователя Ch Ch 1 марта 2011 в 18:38

На самом деле, сейчас на много удобней стало. Можно этот массив подкорректировать под свои задачи, а потом вывести с помощью render().

Аватар пользователя Mixail Mixail 10 ноября 2013 в 14:07

Вывожу форму обратной связи на нужной мне странице следующим кодом:
<?php
module_load_include('inc', 'contact', 'contact.pages');
$form = drupal_get_form('contact_site_form');
$form['subject']['#default_value'] = 'Текст';
$form['message']['#title'] = 'Адрес Вашего сайта';
print render($form);
?>

Заголовок поля «Сообщение» меняется на «Адрес Вашего сайта». Подскажите, почему не выводится в поле «Тема» значение по-умолчанию «Текст»?

Аватар пользователя igorek igorek 10 ноября 2013 в 14:28

"Mixail" wrote:
Заголовок поля «Сообщение» меняется на «Адрес Вашего сайта». Подскажите, почему не выводится в поле «Тема» значение по-умолчанию «Текст»?

Подключите модуль devel. Просмотрите всё содержимое $form например: dsm($form); http://xandeadx.ru/blog/drupal/304
Возможно там где то есть элемент hide() или show()... и т.п.