我的主要问题是:
每当通过 ahah (ahah_helper) 重建表单时,是否会调用 theme_hook() 函数?
我试图显示一个带有一些过滤选项的选择框,当用户更改它时,它下面的表格也会发生变化。
我现在有这个:
function veiculos_listar_form($form_state)
{
$form = array();
ahah_helper_register($form, $form_state);
//biulds $options
$form['listar_veics'] = array(
'#type' => 'fieldset',
'#prefix' => '<div id="listar-veics-wrapper">',
'#suffix' => '</div>',
'#tree' => TRUE,
);
if (!isset($form_state['values']['listar_veics']['filial']))
$form['#filial_veic'] = 1;
else
$form['#filial_veic'] = $form_state['values']['listar_veics']['filial'];
$form['listar_veics']['filial'] = array(
'#type' => 'select',
'#title' => "Listar veículos da filial",
'#options' => $filiais,
'#default_value' => $form['#filial_veic'],
'#ahah' => array(
'event' => 'change',
'path' => ahah_helper_path(array('listar_veics')),
'wrapper' => 'listar-veics-wrapper',
'method' => 'replace',
),
);
return $form;
}
function veiculos_listar_form_submit($form, &$form_state)
{
}
function _listar_veiculos_tabela($filial)
{
//builds $header and $data
$table = theme_table($header, $data);
return $table;
}
function theme_veiculos_listar_form($form)
{
$output = drupal_render($form);
$filial = $form['#filial_veic'];
$output .= '<br>' . $filial . '<br>';
$output .= _listar_veiculos_tabela($filial);
return $output;
}
function veiculos_theme() {
return array(
'veiculos_listar_form' => array(
'arguments' => array('form' => NULL),),
);
}
在我的小天真的世界里,如果在每个 ahah 事件(更改)上都调用了 theme_hook,它应该可以工作。
问题是,打印的变量总是相同的,就像用户选择的内容没有被存储一样。如果用户选择不同的选项,它会显示新选项,但在主题打印时 $filial 变量始终相同。
像这样:
http://img230.imageshack.us/img230/9646/62144334.jpg
关于我可以做些什么来完成这项工作的任何建议?我正在开发我们自己的模块,所以使用视图模块不是一个好主意。
谢谢。