我创建了一个名为“主菜单”的内容类型。我只有几个相互依赖的选择列表。当要选择不同的复选框时,我想显示一个不同的列表。我发现需要使用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();如果该函数包含错误的代码,则用户无法报告您应该对代码进行的任何更改以使其正常运行。