אחד הדברים היפים שכדאי לדעת על דרופל הוא מערכת הטפסים הנפלאה שלה שמאפשרת ליצור בהינף מקלדת טפסים מורכבים בקלות רבה.
אבל לפעמים אנו זקוקים לדף אחד שמכיל מספר טפסים. איך עושים את הפלא הזה? בקלות רבה! כל מה שצריך הוא ליצור מודול של דרופל ואז אנחנו יכולים להפעיל את ה-hooks שלנו.
ראשית עלינו ליצור את הדף. איך יוצרים דפים? באמצעות hook_menu!
function mymodule_menu() {
$items['my_page'] = array(
'title' => t('My Page'),
'page callback' => 'my_page_view',
'access arguments' => array('access content'),
);
return $items;
}
עכשיו עלינו לכתוב את פונקצית הקולבק שהיא בעצם זו שמחזירה את המידע לדף. בפונקציה הזו יהיה שימוש ב-drupal_get_form שמביא לנו את הטופס:
function my_page_view() {
$page['p1'] = drupal_get_form('form_id_1');
$page['p2'] = drupal_get_form('form_id2');
return $page;
}
קל להבין מה קורה פה, אני מחזיר מערך של דפים. בכל איבר של המערך אני מכניס drupal_get_form עם ה-id של הטופס. כאשר הטופס יכול להיות טופס שאני יצרתי באמצעות המודול או טופס של מודול אחר או מערכת.
אם אני רוצה להכניס HTML בין הטפסים או בנוסף להם, גם זה פשוט מאד, פשוט משתמשים ב-markup! למשל:
function my_page_view() {
$page['p1'] = drupal_get_form('form_id_1');
$page['p2'] = drupal_get_form('form_id2');
$page['3']['#markup'] = "<h2>This is some text...</h2>";
return $page;
}
אני יכול לשחק עם המבנה כמובן כמה שיתחשק לי, כל עוד אני מחזיר מערך כמובן. את הדף הזה אפשר לתבנת (מלשון Theming) באופן הרגיל והוא בדיוק כמו כל דף שהוא. אם אני רוצה להוסיף js לדף, קל לי לעשות את זה באמצעות drupal_add_js:
function my_page_view() {
drupal_add_js(drupal_get_path('module', 'mymodule').'/js/my_js.js', array('type' => 'file', 'scope' => 'footer'));
$page['p1'] = drupal_get_form('form_id_1');
$page['p2'] = drupal_get_form('form_id2');
$page['3']['#markup'] = "<h2>This is some text...</h2>";
return $page;
}
כך ניתן ליצור בדרופל 7 דף מרובה טפסים באופן פשוט ואלגנטי.