9

テーブルにいくつかのデータを表示するカスタム Drupal モジュールがあります。各行にはリンクがあり、クリックすると関連する行が削除されます。具体的には、リンクをクリックすると、ユーザーは確認ページに移動します。このページは実際には、「よろしいですか」という 2 つのボタン (「はい」、「いいえ」) を表示する単なる drupal フォームです。行IDを確認ページに渡す必要があると思います。

私の質問: Drupal 7 で新しいページにデータを渡す一般的な方法は何ですか? URL に行 ID を追加して、確認ページから $_GET[] を使用することもできると思います...これはあまり安全ではないと思います。より良い「Drupal」の方法があるかどうか疑問に思っていました。

ありがとう!

4

3 に答える 3

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

}

?>

コアモジュールがそれを行う方法の例については、こちらをご覧ください(node_delete_confirmをご覧ください)

于 2010-06-13T12:36:21.107 に答える
1

最も簡単な解決策は、この目的のために作成された既存のモジュールを使用することです。

URL から設定できるフォームの値を構成し、テーブルに表示されるフィールドを書き換えて、必要なリンクを生成できます。

于 2012-12-10T18:57:56.120 に答える
0

データがノードの場合、リンク node/%/delete を作成できます。% は nid です。Drupal は、コア パスとして削除ページを処理する方法を知っています。次に、削除の確認がシステムの残りの部分に従います。これは非常に「Drupal」です。

これが Drupal 7 でまったく変更されたかどうかはわかりませんが、これは無数のモジュールに対して行ったことです。

于 2010-06-12T17:55:34.493 に答える