القائمة المحددة من الوحدة النمطية الخاصة بي تُرجع خطأ 404
-
25-09-2019 - |
سؤال
أنا جديد على دروبال. لقد قمت بإنشاء وحدة Contace1 مع الكود التالي:
contace1.info
; $Id$
name = Contact1
description = Show how to build contact form
package = Pro Drupal Development
core = 6.x
Contact1.Module
// $Id$
/**
* @file
* practice to build form
*/
/**
* Implimentation of hook_menue().
*/
function contact_menu()
{
$items['contact1'] = array(
'title' => 'Contact',
'page callback' => 'contact_page',
'access argument' => array('access content'),
'type'=>MENU_CALL_BACK,
'access callback' => TRUE,
);
return $items;
}
/**
* menu callback
* called when user goes to http://localhost/drupaldemo/?q=contact
*/
function contact_page()
{
$output = t('You can leave a message using the contact form below.');
//Return the html generated from $form data structure.
$output.= drupal_get_form('contact_nameform');
return $output;
}
/**
* define the form
*/
function contact_nameform()
{
$form['user_name']= array(
'#title' =>t('Your Name'),
'#type' => 'textfield',
'#description' => t('Please enter your name.'),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
) ;
return $form;
}
/**
* validate the form
**/
function contact_nameform_validate()
{
if($form_state['values']['user_name']=="")
{
form_set_error('user_name',t('Please enter your name.'));
}
}
/**
* handle post validation form submition
*/
function contact_nameform_submit($form ,&$form_state)
{
$name=$form_state['values']['user_name'];
drupal_set_message(t('Thanks for filling out the form, %name',array('%name'=>$name)));
}
أنا هذا الرمز الذي حاولت إنشاء نموذج اتصال جديد
لكنه لا يعرض أي رابط ، وعلى الصفحة الافتتاحية ، أعط الصفحة مباشرة.
لا يوجد حل صحيح
نصائح أخرى
أولاً، MENU_CALL_BACK
لا يعرف في دروبال. ما تريد كتابته هو MENU_CALLBACK
, ، الذي يسجل عنصر قائمة في جهاز توجيه القائمة. لن يظهر هذا العنصر في أي قائمة مرئية بشكل طبيعي. فكر في الأمر كعنصر قائمة مخفي. إذا كنت ترغب في جعلها مرئية ، فاستخدم MENU_NORMAL_ITEM
.
'type' = menu_call_back - القائمة عبارة عن رد فعل ، يجب عليك تعيينه على menu_normal_item أو إنشاء قائمة يدويًا في صفحة المسؤول إلى صفحة contact1. تحديث ذاكرة التخزين المؤقت.
أوصي لك بقراءة "Pro Drupal Development" من Vandyk ، وهناك أمثلة على كيفية إنشاء نماذج :)
الخطأ الأول في الكود هو أنه إذا تم تسمية الوحدة النمطية contact1.module ، فيجب أن يكون لكل خطاف تنفذه اسمًا يبدأ بـ Contact1_. يجب عليك بعد ذلك تجنب استخدام Contact_ باسم وظائف الوحدة النمطية ، حيث توجد بالفعل وحدة الاتصال في Drupal 6 ؛ في حالة الوحدة النمطية الخاصة بك لدروبال 6 ، سيكون هناك تعارض بين الوحدات النمطية.
الخطأ الثاني هو أن الثابت الذي تستخدمه هو MENU_CALLBACK
, ، ليس MENU_CALL_BACK
.
إذا كان Contact1.Module هو اسم الوحدة النمطية الخاصة بك ، فيجب تسمية ملف المعلومات الذي يأتي معه contact1.info ، وليس contace1.info. إذا كنت تستخدم اسمًا خاطئًا لهذا الملف ، فيجب ألا يعرض Drupal 6 و أعلى الوحدة النمطية الخاصة بك في قائمة الوحدات النمطية التي يمكنك تثبيتها.
مرحبًا ، حاول استخدام هذا الرمز
/**
* menu callback
*
*/
function contact_page()
{
$output = array(
'item 1' => array(
"#type" => 'markup',
'#markup' => t('You can leave a message using the contact form below.'),
),
'item 2' => array(
"#type" => 'markup',
'#markup' => drupal_get_form('contact_nameform'),
),
);
return $output;
}
/**
* define the form
*/
function contact_nameform($form, $form_state)
{ ..........
.......
هنا ، قمت بتعيين وضع علامة على اكتب لإرجاع الإخراج بالمحتوى والشكل ، قم أيضًا بتعيين المعلمة من contact_nameform (نموذج $ ، $ form_state)