نصب ماژول

نصب ماژول


به نام خدا

ماژول نویسی دروپال قسمت ششم

در بخش تنظیمات ماژول خود از فرم ها استفاده کنیم

 

در مقاله قبلی با ساختار منو آشنا شدیم در این مقاله ما میخواهیم در بخش تنظیمات ماژول خود از فرم ها استفاده کنیم.
فرم ها Form API : دلیل اصلی استفاده از فرم ها ورود داده است،

از طریق فرم ها داده ها ذخیره نمی شوند.وظیفه فرم ها تعیین دسترسی کاربر به صورت اولیه، دریافت داده از کاربر و ارئه ی داده دریافت شده به بخش های است که وظیفه ی مدیریت و انجام اعمالی بر حسب آن ها را دارند.

مراحل ایجاد فرم در دروپال :

۱. ایجاد فرم
۲. قالب بندی فرم
۳. اعتبار سنجی فرم
۴. ارسال فرم
تنظیماتی که قصد داریم برای ماژول خود انجام دهیم
۱. تغییر وضعیت برای فعال کردن نقشه گوگل
۲. قرار دادن مقدار پیش فرض برای مرکز نقشه
۳. قراردادن مقدار پیش فرض برای بزرگنمایی نقشه
ما درماژول خود قصد داریم باگرفتن اطلاعات مربوط به مکان قرار گیری در نقشه گوگل مکان را روی نقشه نمایش بدهیم.
عنصر مورد استفاده در فرم ها(type)
۱. Markup
۲. Checkbox
۳. Fieldset
۴. Text
۵. Select
۶. Submit
Hook_form : برای به دست آوردن درک بهتری از hook_form به آدرس زیر مراجعه کنید.

https://api.drupal.org/api/drupal/modules%21node%21node.api.php/function/hook_form/7.x

برخی از ویژگی های فرم ها:

۱. با آرایه ها نوشته می شوند
۲. خاصیت nested دارند یعنی هر المان میتونه والد تعداد نامحدودی المان دیگه باشه
۳. به طور پیش فرض در دستورالعمل مشخص شده نمایش داده می شود
پارامترها در hook_fom :
۱. $node: گره اضافه شده یا ویرایش شده.
۲. $form_state :آرایه ای از حالت های مختلف فرم
نکته هیچ وقت به برگرداندن $form_state از تابع احتیاج پیدا نمیکنیم.

چون این تابع توسط علامت & به عنوان آرگومان از نوع مرجع تعریف شده، و هر تغییری در form_state باعث تغییر در form_state اصلی می شود.
ما میخواهیم فرم برای تنظیمات ماژولمون قرار بدهیم پس کافیه متغیر page callback در مقاله قبلی را drupal_get_form بزاریم وpage argument را نام تابعمون میزاریم و تابع قبلی رو پاک کنیم چون دیگه به اون نیازی نداریم.

‘page callback’=> ‘drupal_get_form’,
‘page arguments’=> array(‘windfarms_admin_settings_form’),

اگر به یاد داشته باشید در قسمت Action ها با فرم ها کار کردیم.
فرم ماژول شامل قسمت های زیر است:
۱. چک باکس برای فعال وغیر فعال کردن نقشه گوگل (windfarms_gmap)
۲. تعیین موقعیت نقطه مرکزی روی نقشه که شامل دوفیلد عرض جغرافیایی و طول جغرافیایی latitude&longitude)) می باشد.
۳. فهرست انتخاب برای تعیین میزان بزرگنمایی نقشه
۴. ارسال فرم
برای پیدا کردن المانی های که مدنظرتون هست می توانید به لینک زیر مراجعه کنید.

https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7.x

به کد زیر دقت کنید وتوضیحات کد رودر پایان خواهیم گفت.

/**
*Impelement hook_form
*/
function windfarms_admin_settings_form($node ,&$form_state){
$form[‘overview’]=array(
‘#markup’=>t(‘this interface allows administratrs to manage general wind farm setting’),
‘#prefix’=>’

‘,
‘#suffix’=>’

‘,
);
$form[‘windfarms_gmap’]=array(
‘#title’=> t(‘enble google map’),
‘#description’=> t(‘when enabled, google maps will berendered if latitude and logitude are known’),
‘#type’=> ‘checkbox’,
‘#default_value’=> 1,
);
$form[‘default_center’]=array(
‘#title’=> t(‘map center’),
‘#description’=> t(‘location of the center of the map of wind farms.’),
‘#type’=>’fieldset’,
‘#collapsible’=> TRUE,
‘#collapsed’=>FAlSE,
);
$form[‘default_center’][‘windfarm_default_center_lat’]= array(
‘#title’=> t(‘latitude’),
‘#description’=> t(‘signed degrees format(DDD.dddd)’),
‘#type’=> ‘textfield’,
‘#default_value’=> 42.91455,
‘#required’=> true,
);
$form[‘default_center’][‘windfarm_default_center_long’]= array(
‘#title’=> t(‘longitude’),
‘#description’=> t(‘signed degrees format(DDD.dddd)’),
‘#type’=> ‘textfield’,
‘#default_value’=> -75.569851,
‘#required’=> true,
);
$options=range(0,20,1);
$options[0]=t(‘0-furthest’);
$options[20]=t(’20-closest’);
$form[‘windfarms_default_gmap_zoom’]=array(
‘#title’=> t(‘Google map zoom’),
‘#description’=> t(‘Default level of zoom, between 0 and 20.’),
‘#type’=>’select’,
‘#options’=> $options,
‘#default_value’=> 8,
‘#required’=> true,
);
$form[‘submit’]=array(
‘#type’=>’submit’,
‘#value’=>t(‘save’),
);
return $form;

فرم overview :

#markup: یک المان ساده ی متنی است که متن را نمایش میدهد.
#prefix & #suffix : دوخصیصه که باعث می شود که متنی به قبل وبعد از المان اضافه شود در واقع ما با این کار المان خود را بین تگ p گذاشته ایم.
فرم(windfarms_gmap) :
#title :نیازی به توضیح ندارند.
#type: یک چک باکس را برای فعال وغیر فعال کردن نقشه
# default_value : مقدار پیش فرض است که چون در اینجا type ما از نوع چک باکس است و مقدار آن یک است

یعنی به طور پیش فرض فعال باشد اگر۰ بود غیر فعال بود.
فرم (default_center) :
#type: fieldset گذاشتیم و دراین قسمت ما میخواهیم latitude&longitude رو قرار بدهیم به همین دلیل type این فرم رو fieldset می گزاریم چون میتوانیم درون آن مجموعه ای از فیلدها را قرار دهیم.
‘#collapsible’:می توانیم فرم خود را به صورت کشویی بزاریم

که با کلیک روی عنوانمون فرم باز و بسته شود چون مقدار آن true است در ابتدا باز است اگر false بزاریم در ابتدا بسته نمایش داده می شود.
‘#collapsed’:حالت بسته شدن است که مقدار آن false است

(در ابتدا وقتی روی عنوان کلیک می کنیم و فرم بسته می شود در واقع این کد اجرا می شود و برعکس)
فرم [‘default_center’][‘windfarm_default_center_lat’]:زیر مجموعه فرم بالا است برای تعیین عرض جغرافیایی است.
#required : اگر مقدار آن true باشد فیلد ما اجباری است .
بقیه المان ها را قبلا توضیح داده ایم و نیاز به توضیح نیست

فرم [‘windfarms_default_gmap_zoom’]:
#type : به صورت select لیست انتخاب هست باید options تعریف کنیم که قبل از تعریف فرم این کار را انجام میدهیم
برای تعریف option از تابع rang استفاده کردیم که متغیر اول ما کم ترین مقدار، متغیر دوم ما بیشترین مقدار و متغیر سوم ما واحد است (با چه عددی جمع بشه ).
فرم [‘submit’]:
#type : به دلیل اینکه type ، submit است یک دکمه برای ما در ایجاد می شود که مقدار آن با (value) مشخص می شود.
بعد از ذخیره کد و پاک کردن کش سایت می توانیم در صفحه مدیریت ماژول فرم خود را ببینیم به تصویر زیر دقت کنید.

فرم ها

فرم ها

در مقاله بعدی اعتبار سنجی فرم را انجام می دهیم

با همراه باشید

آموزش دروپال

فرم های api

امکان ارسال نظر وجود ندارد!