Подскажите почему не выводится форма?Выводит Array
<?phpfunction module_block_view($delta = '') {
// This example is adapted from node.module.
$block = array();
switch ($delta) {
case 'katalog_form':
$block['subject'] = t('Форма каталога');
$block['content'] = drupal_get_form('module_form') ;?>
Писал на тестовом проекте, там все работало, перенес - не работает.
плюс ругается:
Warning: Missing argument 2 for module_form(), called in /includes/theme.inc on line 1158 and defined в функции module_form() (строка 3 в файле /sites/all/modules/module/module.module).
Notice: Array to string conversion в функции drupal_render() (строка 5911 в файле /includes/common.inc).
3 строка: function module_form($form, &$form_state){
var_dump(drupal_get_form('module_form')) показывет нормальный массив.
Пробовал так: drupal_render(drupal_get_form('module_form')), преобразовывается в string 'Array'
В чем может быть проблема?
Комментарии
Потому что вы постеснялись скопипастить module_form(), а мы вам постесняемся сообщить, что вы туда не передали один из обязательных параметров
А можно как-нибудь более нормально ответить?
А можно весь код показать?
<?phpfunction module_form($form, &$form_state){
$form=array();
$form['category'] = array(
'#type' => 'textfield',
'#title' => t('Категория'),
'#default_value' => t('Категория / Подкатегория'),
'#required' => TRUE,
);
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('ФИО'),
'#default_value' => t('Имя фамилия отчество'),
'#required' => TRUE,
);
$form['phone'] = array(
'#type' => 'textfield',
'#title' => t('Телефон'),
'#default_value' => t('Телефон'),
);
$form['email'] = array(
'#type' => 'textfield',
'#title' => t('Электронная почта'),
'#default_value' => t('Электронная почта'),
);
$form['question'] = array(
'#type' => 'textarea',
'#title' => t('Вопрос'),
'#default_value' => t('Задайте свой вопрос'),
'#required' => TRUE,
'#resizable' => FALSE
);
$form['time'] = array(
'#type' => 'textfield',
'#title' => t('Время ожидания ответа'),
'#default_value' => t('Время ожидания ответа'),
);
$form['hour'] = array(
'#markup' => t('Часов'),
);
$form['consent_msg'] = array(
'#type' => 'checkbox',
'#title' => t('Я согласен (на) на отправку сообщения организациям'),
'#default_value' => TRUE,
);
$form['consent_email'] = array(
'#type' => 'checkbox',
'#title' => t('Я согласен (на) получать ответы от организаций на электронную почту'),
'#default_value' => TRUE,
);
$form['consent_phone'] = array(
'#type' => 'checkbox',
'#title' => t('Я согласен (на) получать ответы от организаций на телефон'),
'#default_value' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Отправить'),
);
return $form;
}
function module_block_info() {
// This example comes from node.module.
$blocks['katalog_form'] = array(
'info' => t('Форма каталога'),
);
return $blocks;
}
function module_block_view($delta = '') {
// This example is adapted from node.module.
$block = array();
switch ($delta) {
case 'katalog_form':
$block['subject'] = t('Форма каталога');
$block['content'] = drupal_get_form('module_form') ;
break;
}
return $block;
} ?>
Почему-то функция конструктор формы вызывается в функции theme..
А эт не правильно..
Еще самодельные модули или хаки есть в проекте?
ЗЫ..Кстати.. версия друпала какая?
В этом модуле есть код с темой, но он как бы не касается этого блока:
<?php
function get_term(){
$tid = arg(2);
$term = taxonomy_term_load($tid);
if(!empty($term->field_term_image)){
return theme('term', array('name' => $term->name, 'image' => $term->field_term_image));
} else{
return theme('term', array('name' => $term->name));
}
}
function
module_theme() {$module_path = drupal_get_path('module', 'module');
return array(
'term' => array(
'template' => 'term',
'path' => $module_path,
)
);
}
?>
Версия 7.24
Попробуйте переименовать функцию module_form и все ее вызовы
она и называется по-другому, это я тут заменил на "module".
Ндаа.. обычно задачу пытаются облегчить..
А не запутать..
Удачи..