[Решено] Темизация форм на нескольких страницах.

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

Аватар пользователя antotor antotor 31 октября 2012 в 12:24

Всем привет. Столкнулся с проблемой которую не могу решить уже долгое время. Пытаюсь темизировать формы на разных страницах в разных модулях (самописных). Делаю это так:

function my_func_form()
{
        $form = array();
        $form['my_func']['itemid'] = array(
        '#type' => 'textfield',
        '#description' => 'id предмета',
        '#size' => 30,
        );
       
        $form['my_func']['rusname'] = array(
        '#type' => 'textfield',
        '#description' => 'имя предмета',
        '#size' => 30,
        );
       

        $form['#redirect'] = FALSE;
        $form['#theme'] = 'my_func_theme_function';
        $form['my_func']['submit'] = array('#type' => 'submit', '#value' => t('Добавить предмет'));
       
        return $form;
}

function my_func_theme($existing, $type, $theme, $path)
{
  return array(
        'my_func_theme_function' => array(
        'render element' => 'my_func_form',
        'arguments' => array('form' => NULL),
    ),
  );
}

function theme_my_func_theme_function($form)
{
$output = NULL;
        $output .= '<table>';
        $output .= '<tr><td width="100">' . drupal_render($form['my_func_form']['my_func']['itemid']) . '</td>';
        $output .= '<td width="100">' . drupal_render($form['my_func_form']['my_func']['rusname']) . '</td>';
        $output .= '<td width="100">' . drupal_render($form['my_func_form']['my_func']['submit']) . '</td></tr></table>';
        $output .= drupal_render_children($form['my_func_form']);
       
        return $output;
}

Все хорошо работает, тема есть, пока я не создаю еще один модуль использующий темизацию, например такой:

function my_second_func_form()
{
        $form = array();
        $form['my_second_func']['itemid'] = array(
        '#type' => 'textfield',
        '#description' => 'id предмета',
        '#size' => 30,
        );
       
        $form['my_second_func']['rusname'] = array(
        '#type' => 'textfield',
        '#description' => 'имя предмета',
        '#size' => 30,
        );
       

        $form['#redirect'] = FALSE;
        $form['#theme'] = 'my_second_func_theme_function';
        $form['my_second_func']['submit'] = array('#type' => 'submit', '#value' => t('Добавить предмет'));
       
        return $form;
}

function my_second_func_theme($existing, $type, $theme, $path)
{
  return array(
        'my_second_func_theme_function' => array(
        'render element' => 'my_second_func_form',
        'arguments' => array('form' => NULL),
    ),
  );
}

function theme_my_second_func_theme_function($form)
{
$output = NULL;
        $output .= '<table>';
        $output .= '<tr><td width="100">' . drupal_render($form['my_second_func_form']['my_second_func']['itemid']) . '</td>';
        $output .= '<td width="100">' . drupal_render($form['my_second_func_form']['my_second_func']['rusname']) . '</td>';
        $output .= '<td width="100">' . drupal_render($form['my_second_func_form']['my_second_func']['submit']) . '</td></tr></table>';
        $output .= drupal_render_children($form['my_second_func_form']);
       
        return $output;
}

В итоге темизация работает только на той странице, на которой я находился в момент сброса кеша. Или на которую зашел сразу после сброса кеша. При этом на второй странице темизация отсутствует и я вижу стандартную форму. Такое впечатление что какая то переменная пытается примениться к обоим формам.

Подскажите, пожалуйста, где ошибка?

UPD:

Разобрался сам. Файлы модуля были во вложенных файлах .inc. Перенес весь код в файл .module И все заработало