forms – alterar una función hook_form_alter

Pregunta:

¿Es posible usar hook_form_alter() en una función hook_form_alter() ya definida en otro módulo?

Por ejemplo, si quiero alterar la salida del siguiente gancho desde el módulo de menú, ¿puedo definir una función que me permita alterar la matriz renderizable?

function menu_form_node_type_form_alter(&$form, $form_state) { ... }

He mirado la documentación pero parece que no puedo encontrar nada que sugiera que esto está permitido / posible.

Respuesta:

Si crea su propia función hook_form_alter en un módulo personalizado, puede modificar el mismo formulario.

Todas las variables de $ form que se pasan a todos los enlaces de cambio de formulario son iguales. Deberá especificar el formulario que desea modificar marcando $ form_id. ¡$ form_id pasa a ser el tercer argumento que se pasa!

Por ejemplo:

function MODULE_form_alter(&$form, $form_state, $form_id)
{
    if ($form_id == "YOUR_FORM_ID)
    {
        //modify form here.
    }
}

También existe el orden de ejecución de los ganchos, que puede modificar utilizando hook_module_implements_alter . Con este gancho, puede configurar su módulo para que se ejecute en último lugar.

Por ejemplo:

function MODULE_module_implements_alter(&$implementations, $hook)
{
    if ($hook == 'form_alter')
    {
         $group = $implementations['my_module'];
         unset($implementations['my_module']);
         $implementations['my_module'] = $group;
    }
}

Eso debería hacer exactamente lo que necesita hacer.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım