Всем привет. Столкнулся с проблемой которую не могу решить уже долгое время. Пытаюсь темизировать формы на разных страницах в разных модулях (самописных). Делаю это так:
{
$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;
}
Все хорошо работает, тема есть, пока я не создаю еще один модуль использующий темизацию, например такой:
{
$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 И все заработало