Posted by oskar_calvo on December 22, 2011 at 8:14am
Buenas gente.
Tengo un nodo perfil que realmente aglutina dos perfiles (comercial y jefe de ventas).
Hay un campo de fecha que solo afecta al comercial, y es obligatorio.
El problema es que cuando rrhh entra a ver el perfil de uno u otro usuario, como ve todos los campos, el campo de fecha que no es obligatorio para el jefe de ventas hay que rellenarlo.
He probado con el hook_form_alter, para forzar el campo de obligatorio a no obligatorio.
He probado también a montar una función after_build para realizar los campos, pero ni por esas.
Cuando hago un dpm me indica que #required esta a 0 pero me sigue pidiendo el campo fecha como obligatorio.
¿Alguna sugerencia?
Oskar

Comments
Buenas Oskar, Yo lo que haría
Buenas Oskar,
Yo lo que haría sería quitarlo de obligatorio del formulario y en la función de validación comprobar si es obligatorio para este perfil y devolver un form_set_error o dejarlo pasar.
suerte!
Ejemplo con CCK en D6...
<?php
/**
* Implementation of hook_form_alter().
*/
function MODULE_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'NODETYPE_node_form') {
// Alter the required attribute of field ABC based on XXX.
$field_element = &content_get_nested_elements($form, 'field_ABC');
$field_element = &$field_element[0];
$field_element[0]['#required'] = (XXX ? TRUE : FALSE);
}
}
?>
Puede que
$field_element[0]['#required']dependa del tipo de campo.