drupal 7 – ¿Cómo agregar el botón de reinicio a los formularios?

Pregunta:

He estado investigando este asunto durante un tiempo sin una respuesta clara todavía.
Entonces, aquí hay algunas preguntas …

  1. 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?

  2. ¿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.

Leave a Comment

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

web tasarım