Не работает рендеринг формы

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

Аватар пользователя The_vados The_vados 11 января 2014 в 20:16

Подскажите почему не выводится форма?Выводит 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'
В чем может быть проблема?

Комментарии

Аватар пользователя The_vados The_vados 11 января 2014 в 20:49
<?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;
} ?>

Аватар пользователя Orion76 Orion76 11 января 2014 в 21:02

"The_vados" wrote:
Warning: Missing argument 2 for module_form(), called in /includes/theme.inc on line 1158 and defined в функции module_form()

Почему-то функция конструктор формы вызывается в функции theme..
А эт не правильно..
Еще самодельные модули или хаки есть в проекте?

ЗЫ..Кстати.. версия друпала какая?

Аватар пользователя The_vados The_vados 11 января 2014 в 21:17

В этом модуле есть код с темой, но он как бы не касается этого блока:

<?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

Аватар пользователя The_vados The_vados 11 января 2014 в 21:30

orion76 wrote:
Попробуйте переименовать функцию module_form и все ее вызовы

она и называется по-другому, это я тут заменил на "module".