Pregunta:
He estado investigando este asunto durante un tiempo sin una respuesta clara todavía.
Entonces, aquí hay algunas preguntas …
-
Asumo (corríjanme si me equivoco) que Drupal 7 no admite botones de reinicio. Parece, de acuerdo con la API de formulario (como se discutió en Pro Drupal 7 Development), que todos los botones (tipo de entrada = "enviar", botón e image_button) son botones de envío predeterminados. Tampoco parece haber una forma de anular los valores predeterminados.
Entonces, si quisiera agregar funcionalidad a mis formularios para que mis usuarios borren formularios (si así lo desean), ¿tendría que crear un módulo?
-
¿Podría lograr esto usando el tipo de botón general con execute_submit_callback establecido en falso y agregando algún tipo de función Ajax al evento mousedown?
** EDITAR: agregué lo siguiente a mi hook_form_alter () **
$form['reset'] = array(
'#input' => TRUE,
'#name' => 'reset',
'#button_type' => 'reset',
'#executes_submit_callback' => FALSE,
'#limit_validation_errors' => TRUE,
'#process' => '',
'#theme_wrappers' => array('button'),
);
Recibí el siguiente mensaje de error y advertencia:
Aviso: índice no definido: # tipo en _form_builder_handle_input_element () (línea 1949 de /var/www/vhosts/lae/drupal-7.11/includes/form.inc).
Advertencia: argumento no válido proporcionado para foreach () en form_builder () (línea 1763 de /var/www/vhosts/lae/drupal-7.11/includes/form.inc).
¿Hay alguna manera de agregar el tipo de botón "reiniciar" a los tipos de botones sin que se bloquee todo el formulario .inc?
Respuesta:
Mi forma preferida de hacer esto es.
Agregue el botón a su formulario así:
$form['options']['reset'] = array(
'#type' => 'submit',
'#value' => t('Reset'),
'#submit' => array('MY_MODULE_FORM_ID_reset'),
);
Luego crea la función de reinicio así:
function MY_MODULE_FORM_ID_reset($form, &$form_state) {
$form_state['rebuild'] = FALSE;
}
Sin Javascript, sin marcado.