我没有尝试过,但我敢打赌它有效:使用 hook_form_alter() 访问您的块配置表单。在那里,您将拥有一个 &$form_state 并能够做一些花哨的 AJAX 的东西(见这个)。困难的部分是只在改变钩子上改变你的形式。可能的方式:
不确定这是否有效(最优雅的方式):
function mymodule_form_alter(&$form,&$form_state,$form_id) {
if ($form_id == 'block_admin_configure' ) {
// Find the delta in the $form variable
if ($form['delta'] == 'the_delta_you_are_looking_for') {
//do fancy ajax stuff
}
}
}
丑陋但绝对可能:
function mymodule_form_alter(&$form,&$form_state,$form_id) {
if ($form_id == 'block_admin_configure' && arg(4) == 'mymodule') {
//do fancy ajax stuff
}
}
}
更丑但也有可能:
function mymodule_block_configure($delta = '') {
$form = array();
if ($delta == 'my_block') {
$form["my_block_change_this"] = array(
"#type" => "hidden",
"#value" => "lalala",
)
}
}
function mymodule_form_alter(&$form,&$form_state,$form_id) {
if ($form_id == 'block_admin_configure' ) {
if (!empty($form['my_block_change_this'])) {
//do fancy ajax stuff
}
}
}
提示:打印出 form_state-array(在 alter hook 处)并查看里面有什么(当我遇到 FAPI-Issues 时,这总是我做的第一件事)。希望这可以帮助。