Pregunta

Tengo un módulo de Drupal personalizada que muestra algunos datos en una tabla. Cada fila tiene un enlace que, si se hace clic, se eliminará la fila correspondiente. Específicamente, cuando se hace clic en el enlace que llevará al usuario a una página de confirmación. Esta página es en realidad una forma de Drupal que dice '¿está seguro' con dos botones: 'Sí', 'No'. Calculo que tendrá que pasar el rowID a la página de confirmación.

Mi pregunta: ¿Cuál es el típicamente manera de pasar datos a una nueva página en Drupal 7? Creo que sólo podría añadir la rowID a la URL y utilizar los $ _GET [] de la página de confirmación ... No creo que esto es muy seguro y me preguntaba si había una manera mejor 'Drupal'.

Gracias!

¿Fue útil?

Solución

Se podría utilizar algo como lo siguiente

<?php
function yourmod_menu() {
  // for examlple
  $items['yourmod/foo/%/delete'] = array(
    'title' => 'Delete a foo',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('youmode_foo_delete_confirm', 2), // 2 is the position of foo_id
    'access arguments' => array('delete foo rows'),
    'type' => MENU_CALLBACK,
  );

  return $items;
}

function yourmod_foo_delete_confirm($form, &$form_state, $foo_id) {
  // load the row
  $foo = yourmod_get_foo($foo_id);

  // build your form, if you need to add anything to the confirm form
  // ....
  // Then use drupal's confirm form
  return confirm_form($form,
                  t('Are you sure you want to delete the foo %title?',
                  array('%title' => $foo->title)),
                  'path/to/redirect',
                  t('Some description.'),
                  t('Delete'),
                  t('Cancel'));

}

?>

Usted puede mirar aquí para ver ejemplos de cómo módulos de núcleo hacerlo (tiene mira node_delete_confirm)

Otros consejos

La solución más simple sería utilizar un módulo existente creada para este propósito:

Puede configurar los valores del formulario se puede ajustar desde la URL y vuelva a grabar los campos que aparecen en la tabla para generar los enlaces necesarios.

Si los datos son nodos, puede hacer que el enlace de nodo /% / borrar donde% es el NID. Drupal sabe cómo manejar la página de borrado, ya que su trayectoria de un núcleo. Entonces, la confirmación de eliminación sigue el resto del sistema y es muy 'Drupal'.

No estoy seguro de si esto ha cambiado en absoluto en Drupal 7, pero esto es lo que hice para un sinnúmero de módulos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top