我创建了一个名为“主菜单”的内容类型。我只有几个相互依赖的选择列表。当要选择不同的复选框时,我想显示一个不同的列表。我发现需要使用Ajax来编辑表单才能实现这一点,但是谁能告诉我如何将Ajax与hook_form_alter一起使用?
我应该编辑的表单的表单ID是“ main_menu_node_form”。当我尝试使用hook_form_alter()
并添加#ajax
表单字段的属性来访问此表单时,似乎无法执行此操作,因为在将句柄传递给之前已经渲染了这些字段hook_form_alter()
。谁能帮我解决这个问题?
注意:我已经使用创建了内容类型hook_install()
。
function main_menu_content_type_form_main_menu_node_form_alter(&$form, &$form_state, $form_id) {
dpm($form);
dpm($form_state);
$form['field_mlnk'] = array(
'#ajax' => array(
'callback' => 'main_menu_content_type_form_main_menu_node_form_alter_callback',
'wrapper' => 'link-div',
'method' => 'replace',
'effect' => 'fade',
),
);
}
1
查看您尝试更改的表单的代码以及用于更改它的代码将很有帮助。
—
kiamlaluno
@kiamlaluno我已经使用hook_install函数创建了内容类型main_menu。我想显示字段,同时根据列表中的选择添加内容。我应该在hook_install或Hook_form_alter中添加ajax属性。
—
Drupal开发人员
不过,查看您正在使用的代码还是很有用的
—
kiamlaluno
hook_form_alter()
(如您所写,“当我尝试使用alter […[…]表单访问此表单时”)。
@kiamlaluno我已将代码段添加到我的问题中。请看一下,然后告诉我代码是否有效。
—
Drupal Developer
如果您还显示的代码,那将是完美的
—
kiamlaluno
main_menu_content_type_form_main_menu_node_form_alter_callback()
;如果该函数包含错误的代码,则用户无法报告您应该对代码进行的任何更改以使其正常运行。