He creado un tipo de contenido llamado "menú principal". Tengo pocas listas seleccionadas que dependen unas de otras. Quería mostrar una lista diferente cuando se seleccionan diferentes casillas de verificación. Descubrí que necesito usar Ajax para editar el formulario para lograrlo, pero ¿alguien puede decirme cómo usar Ajax con hook_form_alter?
La identificación del formulario que se supone que debo editar es "main_menu_node_form". Cuando trato de acceder a este formulario usando hook_form_alter()
y agrego la #ajax
propiedad de los campos del formulario, parece que no puedo hacerlo ya que los campos ya se representan antes de pasar el identificador hook_form_alter()
. ¿Alguien puede ayudarme a resolver esto?
Nota: He creado el tipo de contenido usando 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',
),
);
}
hook_form_alter()
(como escribió, "Cuando intento acceder a este formulario utilizando el formulario alter [... [...]").main_menu_content_type_form_main_menu_node_form_alter_callback()
; Si esa función contiene código incorrecto, los usuarios no pueden informar los cambios que debe realizar en su código para que funcione.Respuestas:
Podría proporcionarle información detallada sobre lo que está haciendo mal con hook_form_alter si incluye algún código real de su módulo personalizado. Sin embargo, dado que no está dando ningún detalle, puede ver el video: Cómo construir hermosos formularios en Drupal 7 (tenga en cuenta que ingresé la URL para que comience en el momento en que se describe el ajax). Aproximadamente 5 minutos de ver esto probablemente le dará la respuesta a su pregunta (ya que describe exactamente cómo usar ajax con hook_form_alter), pero si es realmente impaciente, el código real se muestra en algún lugar por aquí .
Si desea ver un ejemplo en vivo, bien probado y documentado de un formulario modificado con ajax, hay uno en el módulo Ejemplos . Puede encontrar el enlace real aquí y la función de devolución de llamada aquí .
Espero que esto ayude. Si no es así, dénos más información sobre su código y podremos decirle exactamente qué está haciendo mal.
fuente