سؤال
لدي وحدة Drupal مخصصة تعرض بعض البيانات في جدول. يحتوي كل صف على رابط إذا تم النقر عليه سيحذف الصف ذي الصلة. على وجه التحديد ، عند النقر فوق الرابط ، فإنه سيأخذ المستخدم إلى صفحة تأكيد. هذه الصفحة هي في الحقيقة مجرد نموذج دروبال يقول "هل أنت متأكد" مع زرين: "نعم" ، "لا". أعتقد أنني سأحتاج إلى تمرير Rowid إلى صفحة التأكيد.
سؤالي: ما هي الطريقة عادة لتمرير البيانات إلى صفحة جديدة في Drupal 7؟ أعتقد أنه يمكنني فقط إضافة RowID إلى عنوان URL واستخدام $ _get [] من صفحة التأكيد ... لا أعتقد أن هذا آمن للغاية وكان يتساءل عما إذا كان هناك طريقة أفضل "دروبال".
شكرًا!
المحلول
كنت تستخدم شيء مثل ما يلي
<?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)
نصائح أخرى
سيكون أبسط الحلول هو استخدام وحدة موجودة تم إنشاؤها لهذا الغرض:
- http://drupal.org/project/entityreference_prepopulate (لمراجع الكيان)
- http://drupal.org/project/nodereference_url (للمراجع العقدة)
- http://drupal.org/project/prepopulate (لقيم النموذج الأخرى)
يمكنك تكوين قيم النماذج التي يمكن تعيينها من عنوان URL ، ثم أعد كتابة الحقول المعروضة في الجدول الخاص بك لإنشاء الروابط اللازمة.
إذا كانت البيانات عبارة عن عقد ، فيمكنك عمل عقدة الارتباط/٪/حذف حيث تكون ٪ NID. يعرف دروبال كيفية التعامل مع صفحة الحذف ، باعتبارها مسارًا أساسيًا. بعد ذلك ، يتبع تأكيد الحذف بقية النظام وهو "دروبال" للغاية.
لست متأكدًا مما إذا كان هذا قد تغير على الإطلاق في Drupal 7 ، ولكن هذا ما فعلته لعدد لا يحصى من الوحدات النمطية.