Drupal将参数传递到页面

Drupal将参数传递到页面,drupal,drupal-7,Drupal,Drupal 7,我有一个自定义Drupal模块,在表中显示一些数据。每行都有一个链接,单击该链接将删除相关行。具体来说,当点击链接时,用户将进入确认页面。这个页面实际上只是一个drupal表单,上面有两个按钮:“确定”、“否”。我想我需要将rowID传递到确认页面 我的问题:在Drupal7中,将数据传递到新页面的典型方式是什么?我想我可以将rowID添加到URL中,然后使用确认页面中的$\u GET[]。。。我认为这不是很安全,我想知道是否有更好的“Drupal”方式 谢谢 如果数据是节点,则可以使链接节点/

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

我的问题:在Drupal7中,将数据传递到新页面的典型方式是什么?我想我可以将rowID添加到URL中,然后使用确认页面中的$\u GET[]。。。我认为这不是很安全,我想知道是否有更好的“Drupal”方式


谢谢

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


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

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

}

?>

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

  • (供实体参考)
  • (用于节点引用)
  • (对于其他形式值)

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

它基本上是MySQL表中的一行,而不是节点。。。所以我不认为这就是我要寻找的,如果数据与节点无关,那么数据是如何进入系统的?无论如何,你只需要将mymodule/%/delete组成一个菜单钩子,其中%是行ID。该页面将使用确认表单调用drupal\u get\u表单,并钩住提交过程。这有点像是一个应用程序,使用drupal来处理用户管理和主题等繁琐的事情。数据通过insert语句输入。还要注意,对于Drupal7,有一个实体系统。因此,如果你的“行”是域实体,你应该考虑使用实体API,因为它会减轻大量的编码,特别是如果你依靠这个模块谢谢,这帮助我走上正确的轨道。我在这里找到了一个很好的教程:我在这个视频教程中找到了一个很棒的例子:对于Drupal 6,它的工作原理几乎相同,但确认函数是
函数yourmod\u foo\u delete\u confirm($form\u state,$foo\u id)