امروز : یکشنبه, 28 آبان 1396
اموزش Codeigniter جلسه چهارم ایجاد صفحات ایستا
3/50 امتیاز از 12 رای
 تکنولوژی  |     |   309

در سه جلسه ی قبلی سری آموزشی فریم ورک Codeigniter هدف ما این بود تا با ساختار کلی و اصول کاری آن تا حد قابل قبولی آشنا شوید. اما از این جلسه رفته رفته با تک تک قابلیت ها و اجزای این فریم ورک آشنا شده و نهایتا با یک پروژه ی کاربردی و عملی تمام موارد آموزش داده شده را به کار خواهیم گرفت.

بسیاری از مواقع پیش می آید که در پروژه ی خود نیاز به ایجاد صفحات ثابت خواهید داشت. پس با همراه باشید، در این جلسه قصد داریم تا روش ایجاد صفحات استاتیک (ایستا) را با فریم ورک Codeigniter به شما آموزش دهیم.

ایجاد صفحات استاتیک

بدون توضیح اضافه به سراغ اصل آموزش می رویم. ابتدا نرم افزار زمپ را روی رایانه ی خود اجرا کرده و سرور آپاچی و Mysql را در حال فعال قرار دهید.

در پوشه ی htdocs محل نصب نرم افزار زمپ، یک پوشه ی جدید به نام ci-static ایجاد کرده و سپس فایل های اصلی فریم ورک Codeigniter را که در جلسات قبل دانلود کرده بودید در این پوشه کپی کنید.

همانند روشی که در جلسات قبل توضیح دادیم نصب فریم ورک را انجام دهید تا پس از اجرای آدرس http://127.0.0.1/ci-static صفحه ی خوش آمدگویی Codeigniter به شما نمایش داده شود.

اولین موردی که باید برای ایجاد یک صفحه ی ثابت ایجاد کنید، کنترلری است که از طریق آن صفحات استاتیک را مدیریت کنیم. در جلسه ی قبلی کمی در مورد ساختار URL فریم ورک مورد بحث صحبت کردیم. اما به آدرس َURL زیر دقت کنید:

http://example.com/news/latest/10

اگر چنین وب سایتی با Codeigniter ایجاد شده باشد، مطمئنا کنترلری به نام news در آن ایجاد شده که این کنترلر دارای متدی به نام lastest است. شماره ی ۱۰ در پایان آدرس نیز اشاره به آی دی یکتای خبر، دارد و از این طریق خبر خاصی به کاربر نمایش داده شده است. در واقع این عدد آرگومان متد یاد شده خواهد بود. در روش MVC نیز شرایط به همین صورت است. آدرس زیر را در نظر بگیرید:

http://example.com/[controller-class]/[controller-method]/[arguments]

شرایط آدرس بالا نیز همانند مثال قبل است. اما همچنان که شمای URL پیچیده تر شود، امکان دارد وضعیت کمی تغییر کند. اما فعلا تمام چیزی که نیاز دارید بدانید همان است که توضیح دادیم.

اما به سراغ ادامه ی کار می رویم. در مسیر application/controllers فایلی به نام Page.php ساخته و کد زیر را در آن قرار دهید.

<?php class Pages extends CI_Controller { public function view($page = 'home') { } } 

با استفاده از کد بالا شما یک کلاس کنترلر ایجاد کرده اید که نام آن Pages است. این کلاس از کلاس اصلی کنترلر یعنی CI_Controller ارث بری می کند و دارای یک متد به نام view است. این متد یک آرگومان ورودی دریافت می کند که البته مقدار پیش فرض این آرگومان نیز home تعیین شده است. با این روش، کلاس ایجاد شده در بالا می تواند از تمامی متدها و متغیرهای تعریف شده در کلاس اصلی CI_Controller در آدرس system/core/Controller.php استفاده کند.

کنترلر در واقع مرکزی است که هر درخواستی به آن ارسال می شود. همانند کلاس های پی اچ دی به منظور اشاره به خود کلاس از this$ استفاده می کنیم. با اشاره به this$، نما ها، و دستورهای اصلی فریم ورک اجرا خواهند شد.

حال که اولین متد خود را ایجاد کردیم، وقت آن رسیده تا چند صفحه ی اچ تی ام ال ساده را نیز ایجاد کنیم. در اینجا قصد داریم تا دو صفحه ایجاد کنید که یکی به عنوان header و دیگری به عنوان footer در نظر گرفته خواهند شد.

در مسیر application/views/templates فایلی به نام header.php ایجاد کرده و کد زیر را در آن قرار دهید.

<html> <head> <title>CodeIgniter Tutorial</title> </head> <body> <h1><?php echo $title; ?></h1> 

The header contains the basic HTML code that you’ll want to display before loading the main view, together with a heading. It will also output the $title variable, which we’ll define later in the controller. Now, create a footer atapplication/views/templates/footer.php that includes the following code:

 <em>&copy; 2016 - </em> </body> </html> 

افزودن منطق به کنترلر

تا اینجای کار شما یک کنترلر و یک متد به نام view ایجاد کرده اید. این متد یک پارامتر ورودی دریافت می کند که این ورودی در واقع نام صفحه ای است که قصد نمایش آن را به کاربر داریم. صفحات استاتیک یا همان قالب صفحات در پوشه ی application/views/pages قرار می گیرند.

در پوشه ی یاد شده، دو فایل به نام های home.php و about.php ایجاد کنید. در داخل این فایل ها هر متنی که دوست دارید را قرار داده و سپس آن ها را ذخیره کنید. در ساده ترین حالت ممکن می توانید از عبارت Hello World استفاده کنید.

به منظور بارگذاری و اجرای این صفحات، باید بررسی کنیم که چنین صفحاتی وجود دارند. به کد زیر توجه کنید. در اینجا ما متد view کنترلری که در مرحله ی اول ایجاد کردیم را تغییر می دهیم.

public function view($page = 'home') { if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php')) { // Whoops, we don't have a page for that! show_404(); } $data['title'] = ucfirst($page); // Capitalize the first letter $this->load->view('templates/header', $data); $this->load->view('pages/'.$page, $data); $this->load->view('templates/footer', $data); } 

حال اگر صفحه ای که فراخوانی می شود وجود داشته باشد، بخش هدر و فوتر و خود صفحه به کاربر نمایش داده خواهند شد. اگر صفحه ی فراخوانی شده وجود نداشته باشد نیز یک خطای ۴۰۴ به کاربر نمایش می یابد. این مورد با شرطی که در متد یاد شده ایجاد کرده ایم انجام می شود.

در اولین خط این متط بررسی کرده ایم که آیا صفحه ی درخواست شده وجود دارد یا خیر. در این بخش از تابع داخلی پی اچ دی به نام file_exists استفاده کرده ایم. تابع show_404 نیز از جمله توابع داخلی فریم ورک Codeigniter است و کار آن نمایش و رندر یک صفحه ی خطای ۴۰۴ است.

در قالب هدر، متغیری به نام title$ مورد استفاده قرار گرفت تا از این طریق بتوانیم عنوان هر صفحه را جداگانه تعریف کنیم. مقدار این متغیر در همین متد (متد view) تعیین شده اما این بار به جای اختصاص دادن مقدار به متغیر، مقدار مورد نظر را به یکی از المان های آرایه ی data$ نسبت داده ایم.

آخرین مرحله بارگذاری صفحه ای است که قصد داریم آن را اجرا کنیم. دومین پارامتر در متد ()view به منظور ارسال متغیر به فایل ویوو مورد استفاده قرار می گیرد. هر مقدار را باید در یکی از اعضای آرایه ی data$ قرار دهیم. بدین منظور باید نام متغیرهایی که در فایل های نما یا ویوو ایجاد کرده ایم را به عنوان کلید آرایه در نظر بگیریم. بنابراین از آنجا که در فایل نمای ما برای تعیین عنوان متغیری به نام title$ را بکار گرفته بودیم، پس برای اختصاص دادن این مقدار به آرایه ی data$ باید از :

$data['title']

استفاده کنیم.

مسیریابی

حال کنترلر ما برنامه نویسی شده و با استفاده از آدرس دهی به مرورگر می توانیم صفحه ی ایجاد شده خود را مشاهده کنیم. اگر در این مرحله به مسیر http://120.0.0.1/ci-static/index.php/pages/view/about مراجعه کنید، صفحه ی درباره ی ما را که در مراحل بالا ایجاد کرده بودید، مشاهده خواهید کرد. همچنین دو بخش هدر و فوتر به ترتیب به بالا و پایین صفحه ی درباره ما (about) اضافه خواهند شد.

استفاده از قوانین مسیریابی سفارشی باعث می شود تا بتوان هر کنترلر و متدی را اجرا کرد و قوانین پیش فرض موجود را به دلخواه تغییر دهیم. حالت پیش فرض از ساختار کلی زیر بهره می برد.

http://example.com/[controller-class]/[controller-method]/[arguments]

حال می خواهیم آدرس دهی خود را برای فریم ورک تعیین کنیم. فایل مسیریابی که در application/config/routes.php قرار گرفته را باز کرده و دو خط زیر را به آن اضافه کنید. تمام خطوطی که مقادیری را در آرایه ی route$ تنظیم می کنند از این فایل پاک کنید.

$route['default_controller'] = 'pages/view'; $route['(:any)'] = 'pages/view/$1'; 

فریم ورک CodeIgniter قوانین مسیریابی خود را از بالا به پایین می خواند و در انجام این کار به اولین قانون موجود درخواست ارسال می کند. هر قانون در واقع یک عبارت منظم (regular expression) است که در سمت چپ قرار گرفته و نقشه ی مدنظر توسعه دهنده را برای هر یک از متدهای کنترلرها تعیین می کند. نام کنترلر، نام متد داخلی و آرگومان ورودی، توسط اسلش ها از یکدیگر جدا می شوند. هنگامی که یک درخواست دریافت شود، فریم ورک CodeIgniter به دنبال اولین مسیریابی موجود در این بخش که با آن درخواست مچ باشد می شود و سپس کنترلر و متد مورد نظر توسعه دهنده را اجرا خواهد کرد و در صورت نیاز آرگومانی را به متد یاد شده ارسال خواهد کرد.

در مورد قوانین مسیریابی در CodeIgniter در جلسات آینده بیشتر صحبت می کنیم.

نکته مهمی که باید بدانید این است که اگر فکر می کنید این مباحث کمی گنگ است اصلا جای نگرانی وجود ندارد. این مباحث اولیه همانند قطعات یک پازل به ذهن شما ارسال شده اند تا رفته رفته با داشتن قطعات بیشتر پازل اصلی که در اینجا فهم کامل فریم ورک CodeIgniter و روش کار با آن است، برای شما میسر شود.

در خط دوم کد بالا به دلیل استفاده از ولدکارت (any:)، این بخش با تمامی درخواست ها هماهنگ و مچ بوده و پارامترها را به متد ()view در کلاس Pages ارسال می کند.

حال اگر آدرس http://127.0.0.1/ci-static/index.php/about را اجرا کنید، همان صفحه ی درباره ی ما بارگذاری خواهد شد. این کار نتیجه ی تغییرات و سفارشی سازی مسیریابی در فریم ورک CodeIgniter است. این فریم ورک در عین سبک بودن انعطاف بسیار بالایی دارد و به عقیده ی ما می توان برای بسیاری از پروژه های سنگین نیز از آن بهره گرفت.

نظر شما در این مورد چیست؟ اگر سوال یا مشکلی با مباحث مطرح شده در این جلسه دارید آن را از طریق بخش دیدگاه ها با ما در میان بگذارید.


برچسب ها :  

نظر خود را به اشتراک بگذارید