Drupal передать аргумент на страницу - PullRequest
9 голосов
/ 12 июня 2010

У меня есть пользовательский модуль Drupal, отображающий некоторые данные в таблице.Каждая строка имеет ссылку, которая при нажатии удалит соответствующую строку.В частности, при нажатии на ссылку пользователь переходит на страницу подтверждения.Эта страница на самом деле просто друпская форма с надписью «ты уверен» с двумя кнопками: «Да», «Нет».Полагаю, мне нужно будет передать rowID на страницу подтверждения.

Мой вопрос: Как обычно передают данные на новую страницу в Drupal 7?Я думаю, я мог бы просто добавить rowID к URL-адресу и использовать $ _GET [] со страницы подтверждения ... Я не думаю, что это очень безопасно, и мне было интересно, есть ли лучший способ для Drupal.

Спасибо!

Ответы [ 3 ]

17 голосов
/ 13 июня 2010

Вы бы использовали что-то вроде следующего

<?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'));

}

?>

Вы можете посмотреть здесь примеры как основные модули делают это (посмотрите на node_delete_confirm)

1 голос
/ 10 декабря 2012

Самое простое решение - использовать существующий модуль, созданный для этой цели:

Вы можете настроить, какие значения формы можно задать из URL-адреса, а затем переписать отображаемые поляв вашей таблице для создания необходимых ссылок.

0 голосов
/ 12 июня 2010

Если данные являются узлами, вы можете сделать узел ссылки /% / delete, где% - это nid. Drupal знает, как обрабатывать страницу удаления, как ее основной путь. Затем подтверждение удаления следует за остальной частью системы и является очень «Drupal».

Я не уверен, изменилось ли это вообще в Drupal 7, но это то, что я сделал для бесчисленных модулей.

...