امروز قصد دارم درباره طراحی المان ها با سرکش براتون توضیح بدم. اول از همه تصویر زیر رو ببینید.
هدف ما این هست که توسط سرکش یه همچین فرمی ایجاد کنیم بدون این که یک خط از html یا js استفاده کنیم. البته میتونید از اون ها هم برای انعطاف بیشتر در فرماتون استفاده کنید که در آینده توضیح میدم.
اگه از استاندارد برنامه نویسی MVC آشنا باشید میدونید که کنترلر وظیفه هندل کردن دستورات کاربر رو بر عهده داره. پس ما ابتدا باید یک اکشن ایجاد کنیم.
برای مثال فایل controller.php از پلاگین hello رو باز کنید و کد زیر رو به اون اضافه کنید.
//this function return login form
public function login(){
return $this->module_login();
}
اکشن ها هیچ فرقی با متد ها ندارن. هر اکشن در واقع یک متد از کلاس کنترلر هست که به صورت public باید تعریف بشه. درواقع این اکشن ها نقاط ارتباط بین کاربر و فریمورک هستند.
در کد بالا چون ما قصد داریم یک فرم ساده رو نشون بدیم درخواست رو به ماژول ارسال میکنیم.
فایل module.php از پلاگین hello رو باز کنید و کد زیر رو بهش اضافه کنید.
public function module_login(){
return $this->view_login();
}
خوب درخواست رو تونستیم به ماژول ارسال کنیم در این متد چون فقط قصد داریم یه فرم ساده نمایش بدیم و کار پردازشی وجود نداره درخواست نمایش به view باید فرستاده بشه.
دقت داشته باشید که طبق MVC کنترلر وظیفه هندل کردن درخواست های کاربران و معتبر سازی داده های ورودی . ماژول وظیفه پردازش اطلاعات و view وظیفه نمایش نتیجه رو بر عهده داره .
خوب فایل view.php رو باز کنید و کد زیر رو بهش اضافه کنید.
$username = new ctr_textbox();
$username->configure('NAME','txt_username');
$username->configure('INLINE',TRUE);
$username->configure('ADDON','U');
$username->configure('PLACE_HOLDER',_('Username'));
$password = new ctr_textbox();
$password->configure('NAME','txt_password');
$password->configure('INLINE',TRUE);
$password->configure('LABEL',_('Password:'));
$password->configure('ADDON','P');
$password->configure('PLACE_HOLDER',_('Password'));
$remember = new ctr_checkbox;
$remember->configure('NAME','ckb_remember');
$remember->configure('LABEL',_('Remember me!'));
$login = new ctr_button;
$login->configure('NAME','btn_login');
$login->configure('LABEL',_('Sign in'));
$login->configure('P_ONCLICK_PLUGIN','users');
$login->configure('P_ONCLICK_FUNCTION','btn_login_onclick ');
$login->configure('TYPE','primary');
$forget = new ctr_button;
$forget->configure('NAME','btn_reset_password');
$forget->configure('LABEL', _('Reset Password'));
$forget->configure('HREF',cls_general::create_url(array('p lugin','users','action','reset_password')));
$forget->configure('TYPE','link');
$r = new ctr_row;
$r->add($login,3);
$r->add($forget,9);
$form = new ctr_form;
$form->configure('NAME','users_login');
$form->add_array(array($username,$password,$remember,$r) );
return array(_('Sign in'),$form->draw());
خوب اگه دقت کنید . من ابتدا دو تا textbox برای نام کاربری و کلمه عبور ساختم و هر کدوم رو کانفیگ کردم
سپس یه چک باکس برای یادآوری ورود ایجاد کردم
در خطوط بعدی ابتدا یک دکمه برای ورود که به رویداد P_ONCLICK اون یک رویداد نسبت دادم
سپس یک دکمه دیگه برای پرش به صفحه بازیابی کلمه عبور ایجاد کردم.
حالا برای اینکه دو دکمه که در بالا تعریف کردم کنار هم و در یک سطر قرار بگیرند اومدم و یک ctr_row تعریف کردم و دو دکمه رو به اون اضافه کردم. آرگومان دوم متد add عرض المان رو مشخص میکنه که مجموع المان های اضافه شده نباید از ۱۲ بیشتر بشه.
و در آخر یک المان ctr_form ساختم و بعد از کانفیگ کردن name اون تمام المان هایی رو که تا حالا ساختم رو بهش اضافه کردم.
همه چیز تموم شده و حالا باید فرم رو به فریمورک برگشت بدم
برای این کار باید یک آرایه تک بعدی با دو اندیس برگشت بدم که اندیس اول برای نمایش در title صفحه و اندیس دوم برای نمایش در بخش content صفحه استفاده میشه.
برای این کار خط از کد زیر استفاده شده. (آخرین خط از متد view)
return array(_('Sign in'),$form->draw());
خوب حالا برای نمایش فرمتون مرورگر رو باز کنید و به آدرس زیر برید
http://YourSite.com?plugin=hello&action=login
login نام اکشنی هست که در فایل controller.php تعریف کردیم.
به همین راحتی میشه با سرکش اپلیکیشن طراحی کرد. در آینده درباره رویداد های سمت سرور و کنترل جادویی RV براتون توضیح میدم.