forms – Obteniendo el error "El formulario ha quedado desactualizado"

Pregunta:

Tengo un formulario de nodo de varios pasos. A la mitad del formulario a través de un cuadro de diálogo emergente, se le pide al usuario que inicie sesión si no lo ha hecho antes.

Tras iniciar sesión correctamente al pasar a la página siguiente del formulario de nodo, aparece este error de validación:

El formulario está desactualizado. Copie cualquier trabajo no guardado en el formulario a continuación y luego vuelva a cargar esta página.

Entiendo que es porque drupal_validation_form() verifica que $form['#token'] y $form_state['values']['form_token'] sean iguales.

¿Cómo evito esto, ya que este es un caso de uso especial (y no es falsificado por algunos productos externos)?

¿Alguna entrada en este frente?

Respuesta:

Tu publicación me acaba de salvar de una gran miseria. No sé cómo se hizo esa conexión, pero su publicación me llevó a un pequeño cambio en el código de mi módulo. Sin embargo, es fácil entender por qué ahora se estaba produciendo el error "El formulario ha quedado obsoleto". Así que vea si esto puede refrescar sus pensamientos y ayudar en su caso.

Mi página admin / mymod tenía un elemento de menú configurado que incluía lo siguiente.

'page callback' => 'drupal_get_form', 
'page arguments' => 'mymod_main',

En mymod_main($op = '') estoy construyendo condicionalmente uno de 2 formularios, pero cada compilación es, por supuesto, un formulario nuevo, por ejemplo, $build['mymod_admin'] = drupal_get_form('mymod_admin') o $build['mymod_delete'] = drupal_get_form('mymod_delete') .

No hay problema cuando la página admin / mymod se carga por primera vez y se llama a mymod_admin. Pero cuando se hace clic en el botón de envío creado en mymod_admin, se llama a mymod_delete y se crea su formulario. Aparece el error "El formulario ha quedado obsoleto" que arruinó el procesamiento del formulario. La solución es simplemente usar mymod_main() como devolución de llamada de página.

Ahora no hay ningún cruce de formularios cuando la página admin / mymod se recarga para cada uno de los formularios, ya que no hay un formulario inicial desde la devolución de llamada manu y luego el segundo formulario definido en $build .

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım