Drupal传递参数到页面

时间:2010-06-12 17:26:57

标签: drupal drupal-7

我有一个自定义Drupal模块,在表格中显示一些数据。每行都有一个链接,如果单击该链接将删除相关行。具体来说,当点击链接时,它将使用户进入确认页面。这个页面实际上只是一个drupal表单,上面写着“你确定”有两个按钮:'是','不'。我想我需要将rowID传递给确认页面。

我的问题:在Drupal 7中将数据传递到新页面的常用方法是什么?我想我可以将rowID添加到URL并使用确认页面中的$ _GET [] ...我不认为这是非常安全的,并且想知道是否有更好的'Drupal'方式。

谢谢!

3 个答案:

答案 0 :(得分:17)

你会使用类似下面的内容

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

}

?>

你可以在这里查看how core modules do it的例子(看看node_delete_confirm)

答案 1 :(得分:1)

最简单的解决方案是使用为此目的创建的现有模块:

您可以配置可以从URL设置的表单值,然后重写表格中显示的字段以生成必要的链接。

答案 2 :(得分:0)

如果数据是节点,则可以创建链接节点/%/ delete,其中%是nid。 Drupal知道如何处理删除页面,因为它是一个核心路径。然后,删除确认跟随系统的其余部分,并且非常“Drupal”。

我不确定这在Drupal 7中是否有所改变,但这就是我为无数模块所做的。