我有一个自定义Drupal模块,在表格中显示一些数据。每行都有一个链接,如果单击该链接将删除相关行。具体来说,当点击链接时,它将使用户进入确认页面。这个页面实际上只是一个drupal表单,上面写着“你确定”有两个按钮:'是','不'。我想我需要将rowID传递给确认页面。
我的问题:在Drupal 7中将数据传递到新页面的常用方法是什么?我想我可以将rowID添加到URL并使用确认页面中的$ _GET [] ...我不认为这是非常安全的,并且想知道是否有更好的'Drupal'方式。
谢谢!
答案 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中是否有所改变,但这就是我为无数模块所做的。