مجله مطالب خواندنی

سبک زندگی، روانشناسی، سلامت،فناوری و ....

مجله مطالب خواندنی

سبک زندگی، روانشناسی، سلامت،فناوری و ....

آموزش Codeigniter - جلسه ششم: روش درج اطلاعات جدید در دیتابیس

[ad_1]

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

ایجاد فرم

به منظور افزودن داده‌های جدید به بانک اطلاعاتی ابتدا باید فرمی را ایجاد کنید تا با استفاده از آن، اطلاعات را دریافت کرده و سپس آن‌ها را ذخیره کنیم. از آنجا که هر رکورد از جدولی که در جلسه‌ی قبل ایجاد کرده بودیم شامل عنوان و متن خبر می‌شود پس نیاز به فرمی خواهیم داشت که دو فیلد ورودی داشته باشد. در مسیر application/views/news فایلی به نام create.php ایجاد کرده و کدهای زیر را در آن قرار دهید.

<h2><?php echo $title; ?></h2>
 
 <?php echo validation_errors(); ?>
 
 <?php echo form_open('news/create'); ?>
 
     <label for="title">Title</label>
     <input type="input" name="title" /><br />
 
     <label for="text">Text</label>
     <textarea name="text"></textarea><br />
 
     <input type="submit" name="submit" value="Create news item" />
 
 </form>
 

در کد بالا احتمالا فقط دو مورد برای شما کمی نا آشنا اسـت. یکی ()forn_open و دیگری ()validation_errors که هر دو از توابع هلپرهای مربوط به ساخت کد‌های HTML در فریم‌ورک Codeigniter هستند.

تابع اول همانطور که اشاره کردیم مربوط به هلپر فرم بوده و در واقع کدهای مربوط به ایجاد فرم جدید را ایجاد کرده و قابلیت‌های دیگری را نیز برای ما به ارمغان می‌آورد. تابع دوم نیز مربوط به نمایش خطاهای احتمالی مربوط به اعتبارسنجی داده‌های ورودی در فیلد‌ها اسـت.

فایل کنترلر news را که در جلسه‌ی قبلی ایجاد کرده بودید باز کنید. در این کلاس شما باید دو کار انجام دهید: اول اینکه باید بررسی کنید که فرم ثبت شده و دوم اعتبارسنجی اطلاعات وارد شده در فیلد‌ها. بدین منظور از کتابخانه‌ی اعتبارسنجی فرم (form validation) استفاده می‌کنیم. کد کنترلر news را به صورت زیر تغییر دهید.

public function create()
 
     $this->load->helper('form');
     $this->load->library('form_validation');
 
     $data['title'] = 'Create a news item';
 
     $this->form_validation->set_rules('title', 'Title', 'required');
     $this->form_validation->set_rules('text', 'Text', 'required');
 
     if ($this->form_validation->run() === FALSE)
     
         $this->load->view('templates/header', $data);
         $this->load->view('news/create');
         $this->load->view('templates/footer');
 
     
     else
     
         $this->news_model->set_news();
         $this->load->view('news/success');
     
 
 

کد بالا قابلیت‌های دیگری را به کنترلر ما اضافه خواهد کرد. ابتدا هلپر فرم و نیز کتابخانه‌ی اعتبارسنجی فرم را بارگذاری می‌کنیم. سپس قوانین اعتبارسنجی اطلاعات ثبت شده در هر فیلد را تعیین کرده‌ایم. متد یا تابع ()set_rules سه آرگومان ورودی دارد: اولین ورودی نام فیلد مورد نظر اسـت، دومین ورودی نامی که برای پیام‌های خطا نیاز داریم خواهد بود و سومین آرگومان نیز قوانین مورد نظر ما برای اعتبارسنجی اسـت. در اینجا ما قصد داریم تا وارد کردن اطلاعات در دو فیلد عنوان و متن خبر را اجباری کنیم و در این شرایط کاربر نمی‌تواند رکورد خالی در دیتابیس ثبت کند.

همانطور که در کد بالا مشاهده می‌کنید، فریم‌ورک Codeigniter کتابخانه‌ی بسیار قدرتمندی برای اعتبارسنجی فرم در اختیار ما قرار می‌دهد. در مورد این کتابخانه در جلسات آینده به صورت کاملا مفصل صحبت خواهیم کرد. پس از تعیین قوانین با یک دستور شرطی if بررسی می‌کنیم که آیا اعتبارسنجی فرم با موفقیت انجام شده یا خیر. اگر فیلد‌ها بر اساس قوانین تعیین شده توسط ما وارد نشده باشد، فرم ما مجددا نمایش خواهد یافت و اگر تمام قوانین در ورودی‌های فرم رعایت شده باشد مدل مربوطه فراخوانی خواهد شد. پس از این مورد نیز فایل‌های ویو یا نمای مربوطه برای نمایش پیام موفقیت آمیز بودن ثبت فرم اجرا می‌شوند. در این مرحله باید در مسیر application/views/news یک فایل جدید به نام success.php ایجاد کنید و سپس در این فایل عبارت مورد نظر خود را که قصد دارید پس از ثبت صحیح فرم به کاربر نمایش داده شود، وارد کنید.

مدل

تنها موردی که باقی مانده، نوشتن یک متد جدید برای افزودن اطلاعات وارد شده توسط کاربر به دیتابیس اسـت. بدین منظور از کلاس Query Builder استفاده خواهیم کرد. همچنین از کتابخانه‌ی input به منظور دریافت اطلاعات ارسال شده به مدل بهره خواهیم برد. فایل مدلی که در جلسه‌ی قبل ایجاد کرده بودید را باز کرده و سپس متد زیر را به آن اضافه کنید.

public function set_news()
 
     $this->load->helper('url');
 
     $slug = url_title($this->input->post('title'), 'dash', TRUE);
 
     $data = array(
         'title' => $this->input->post('title'),
         'slug' => $slug,
         'text' => $this->input->post('text')
     );
 
     return $this->db->insert('news', $data);
 
 

این متد اطلاعات ثبت شده در فرم را که عملیات اعتبارسنجی روی آن‌ها در مرحله‌ی قبل انجام شده را به بانک داده ما اضافه خواهد کرد. خط سوم کد بالا یک تابع جدید به نام ()url_title دارد که از متدهای هلپر URL فریم‌ورک مورد بحث اسـت. این متد فواصل خالی بین کلمات را با علامت خط‌فاصله (-) جایگزین خواهد کرد. این کار برای تبدیل عنوان وارد شده به slug یا همان نامک خاص خبر به کار گرفته شده اسـت. علاوه بر این، متد ()url_title تمامی کاراکترهای وارد شده را به حروف کوچک تبدیل می‌کند تا نامک هر خبر به بهترین شکل ممکن درآید.

سپس داده‌های دریافت شده از کنترلر را برای ثبت در دیتابیس آماده کرده‌ایم. ایندکس هر عضو از آرایه‌ی data$ دقیقا باید با نام فیلد نگه‌دارنده‌ی اطلاعات وارد شده یکسان باشد. مقدار هر عضو از این آرایه نیز همانطور که مشاهده می‌کنید برابر با داده‌ای اسـت که کاربر در فیلد مربوط به آن وارد کرده اسـت. در این بخش احتمالا متوجه متد جدید ()post نیز شده‌اید. این متد یکی از توابع کتابخانه‌ی input بوده و با استفاده از آن، داده‌های وارد شده در فرم از نظر امنیتی بررسی می‌شوند. لازم به ذکر اسـت که کتابخانه‌ی input به صورت پیش‌فرض در کل فریم‌ورک بارگذاری شده و نیازی به بارگذاری مجدد آن نداریم. در نهایت در کد بالا اطلاعات آرایه‌ی data$ را به دیتابیس اضافه می‌کنیم.

نکته: اگر خوب دقت کرده باشید هر رکورد از جدول اخبار ما شامل ۴ فیلد بود: id، title، slug و text. فیلد id به صورت خودکار با اضافه شدن هر رکورد یک واحد افزایش می‌یابد و این خاصیت اسـت که هنگام ساخت جدول برای این فیلد تعریف کرده‌ایم تا شناسه‌ی آی‌دی هر خبر منحصر به فرد باشد. title و text نیز به ترتیب برای عنوان و متن خبر مورد استفاده قرار می‌گیرند و slug نیز نامک اختصاصی هر خبر اسـت که در ادامه بیشتر در مورد آن صحبت می‌کنیم. اما فرم ما فقط شامل دو فیلد دو که یکی برای عنوان و دیگری برای متن خبر اختصاص داده شده‌اند. مقدار slug نیز همان عنوان خواهد بود با این تفاوت که برای این بخش، اطلاعات وارد شده در فیلد عنوان را همانطور که در بالا اشاره کردیم، با تابع ()url_title بهینه‌سازی کردیم.

مسیردهی

پیش از اینکه بتوانید به اپلیکیشن Codegniter خود رکورد جدید بیافزایید، باید در فایل config/routes.php تغییراتی ایجاد کنید. در واقع باید قوانین جدیدی را به این فایل اضافه کنیم. اطمینان حاصل کنید که فایل یاد شده شامل کدهای زیر نیز باشد. با استفاده از این کد‌ها، مسیردهی مورد نظر برای دسترسی به بخش ثبت خبر جدید را برای فریم‌ورک تعریف می‌کنیم. 

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

علاوه بر آنچه گفته شد، با ویرایش config/routes.php روش مشاهده‌ی هر خبر به صورت تکی را با استفاده از slug آن آماده کرده‌ایم.

حال نرم‌افزار سرور مجازی Xampp را اجرا کرده و سپس دو سرور آپاچی و مای‌اس‌کیو‌ال را در حالت فعال قرار دهید. سپس وارد آدرس http://127.0.0,1/codei-dynamic/index.php/news/create شوید. اگر همه مراحل را به درستی انجام داده باشید، فرم مربوط به ثبت خبر جدید برای شما نمایان خواهد شد که می‌توانید با استفاده از آن، رکوردهای جدید را به دیتابیس خود اضافه کنید.

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

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


[ad_2]
لینک منبع
بازنشر: مفیدستان


ادامه مطلب ...

آموزش Codeigniter - جلسه سوم: پیکربندی آدرس ها و شروع کار با بانک داده در فریم ورک

[ad_1]

در دو جلسه‌ی قبل شما را با فریم‌ورک Codeigniter و ساختار اپلیکیشن‌هایی که با این فریم‌ورک توسعه داده می‌شوند، آشنا کردیم. در این جلسه ابتدا پیکربندی‌های اولیه را برای آدرس‌ها انجام می‌دهیم و سپس کار با بانک اطلاعاتی را آغاز خواهیم کرد.

شما تا‌کنون با نصب و راه‌اندازی اولیه‌ی این فریم‌ورک آشنا شده‌اید. در ادامه قصد داریم ساختار اولین اپلیکیشنی که قصد داریم با Codeigniter بسازیم را پیکربندی کنیم. بدین منظور باید به پوشه‌ی application/config مراجعه کنید که شامل تمامی فایل‌های مورد نیاز برای تنظیمات فریم‌ورک اسـت. با زومیت همراه باشید.

پیکربندی آدرس URL پایه

آدرس پایه URL یک سایت را باید با ویرایش فایل application/config/config.php تنظیم کرد. این آدرس در واقع محل قرارگیری تمامی فایل‌های فریم‌ورک تلقی می‌شود که در وب‌سایت‌ها عموما همان آدرس اصلی سایت خواهد بود. دقت کنید که باید در آخر آدرس پایه، حتما یک اسلش (/) قرار دهید. به عنوان مثال می‌توان به آدرس زیر اشاره کرد.

http://example.com/

اگر این بخش تنظیم نشود، CodeIgniter خود سعی می‌کند تا پروتکل، آدرس دامین و محل قرارگیری محل نصب فریم‌ورک را بیابد. در هرحال همیشه بهترین کار این اسـت که خودتان این مشخصه را تنظیم کرده و به حدس خودکار فریم‌ورک بسنده نکنید. این مورد بخصوص در تولید اپلیکیشن‌هایی که برای دیگران توسعه می‌دهید بسیار مهم اسـت. برای تنظیم این مقدار باید در آرایه‌ی config$ مقدار base_url را تغییر دهید. در زیر می‌توانید این بخش را که در فایل application/config/config.php قرار دارد مشاهده کنید.

$config['base_url'] = 'http://your-domain.com';
 

از آنجا که ما قصد داریم این پروژه را در همان محل نصب اولیه که در جلسه اول توضیح دادیم، ایجاد کنیم، پس مقدار آدرس فوق به شکل زیر خواهد بود:

$config['base_url'] = 'http://127.0.0.1/codei/';

پیکربندی بانک‌داده

پیکربندی بانک داده را در جلسه‌ی اول برای شما توضیح دادیم. حال یک بانک داده جدید در سرور محلی Xampp ایجاد کرده و مشخصات آن را همانند مثال زیر تنظیم کنید. در اینجا نام بانک اطلاعاتی ما zoomit اسـت.

$db['default'] = array( 
    'dsn'   => '', 
    'hostname' => 'localhost', 
    'username' => 'root', 
    'password' => '', 
    'database' => 'zoomit', 
    'dbdriver' => 'mysqli', 
    'dbprefix' => '', 
    'pconnect' => TRUE, 
    'db_debug' => TRUE, 
    'cache_on' => FALSE, 
    'cachedir' => '', 
    'char_set' => 'utf8', 
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '', 
    'encrypt' => FALSE, 
    'compress' => FALSE, 
    'stricton' => FALSE, 
    'failover' => array() 
 );

همانطور که پیشتر نیز اشاره کرده بودیم، در سرور محلی، نیازی به تنظیم مقدار رمزعبور کاربر بانک داده نخواهید داشت و نام کاربری بانک داده نیز در سرور یاد شده عموما root اسـت مگر اینکه خودتان آن را تغییر داده باشید. آدرس سرور نیز localhost خواهد بود. یک بخش دیگر که باید تنظیم شود نوع بانک داده (dbdriver) اسـت و از آنجا که ما قصد استفاده از mysqli را داریم بنابراین مقدار آن را mysqli تعیین کرده‌ایم.

نکته: فریم‌ورک Codeigniter از بانک‌های داده‌ی MySQL, MySQLi, Postgre SQL, ODBC و MS SQL پشتیبانی می‌کند.

پیکربندی اجرای خودکار

این فایل تعیین می‌کند که چه سیستم‌هایی باید به صورت پیش‌فرض بارگذاری شوند. با این کار، می‌توان فریم‌ورک را تا جایی که می‌شود سبک کرد. باید اشاره کنیم در حالت پیش‌فرض فقط تعداد کمی از منابع به‌طور خودکار بارگذاری می‌شوند. شما باید به جای اجرای محلی سیستم‌ها، موارد پر استفاده را در حالت بارگذاری خودکار قرار دهید.

موارد ذکر شده در زیر را می‌توان به طور خودکار بارگذاری کرد.

  • کتابخانه‌ها ( Libraries) - یکسری از کتابخانه‌ها را باید به صورت پیش‌فرض در حالت بارگذاری خودکار (Autoload) قرار داد. بدین منظور باید لیست کتابخانه‌های مورد نظر را به صورت آرایه و مانند مثال زیر، ارائه دهید تا Codeigniter آنها را به صورت پیش‌فرض اجرا کند. در مثال زیر ما کتابخانه‌های database (بانک داده) و email (ایمیل) و نیز session ها را در حالت Autoload قرار داده‌ایم.
$autoload['libraries'] = array('database', 'email', 'session');
 
  • درایورها (Drivers) - این کلاس‌ها در مسیر system/Libraries یا application/Libraries قرار گرفته‌اند. کلاس‌های بخش اپلیکیشن در زیر پوشه‌های دو مسیر فوق نیز قرار گرفته و از کلاس CI_Driver_Library ارث‌بری می‌کنند. این کلاس‌ها گزینه‌ی قابل تغییر درایوها را ارائه می‌دهند. در ادامه مثالی برای Autoload کردن درایورهای cache آورده‌ایم.
$autoload['drivers'] = array('cache');
 
  • فایل‌های هلپر (Helper files) - لیستی از فایل‌های هلپر را می‌توان در حالت بارگذاری خودکار قرار داد. مانند مثال زیر، لیستی از کتابخانه‌های مورد نظر خود را به صورت یک آرایه ارائه کنید تا Codeigniter آنها را به صورت پیش‌فرض، اجرا کند. در ادامه مثالی برای این مورد آورده‌ایم. در این مثال، قصد داریم هلپرهای URL و file را در حالت Autoload قرار دهیم.
$autoload['helper'] = array('url', 'file');
 
  • فایل‌های کانفیگ سفارشی (Custom config files) - این فایل‌ها توسط خود شما تولید می‌شوند و فقط در صورتی که فایل کانفیگ سفارشی ایجاد کرده‌اید می‌توانید آن را در حالت Autoload قرار دهید در غیر این صورت این بخش را خالی بگذارید. در ادامه روش بارگذاری خودکار چند فایل کانفیگ را در قالب یک مثال مشاهده می‌کنید:
$autoload['language'] = array('lang1', 'lang2');
 
  • فایل‌های زبان (Language files) - لیستی از فایل‌های زبان مورد نظر که قصد دارید آن‌ها را در حالت Autoload قرار دهید را همانند مثال زیر ارائه کنید. توجه داشته باشید برای اضافه کردن فایل‌های زبان نباید بخش lang_ را در نام آن تایپ کنید. به عنوان مثال codeigniter_lang.php به زبانی به نام codeigniter اشاره دارد. به مثال زیر توجه کنید:
$autoload['language'] = array('lang1', 'lang2');
 
  • مدل‌ها (Models) - بدین منظور باید لیستی از مدل‌های مورد نظر که قصد Autoload کردن آن‌ها را دارید ارائه دهید. روش بارگذاری خودکار مدل‌ها نیز مثل دیگر فایل‌های اشاره شده در بالا بوده و باید به صورت آرایه آن‌ را بنویسید. به مثال زیر توجه کنید:
$autoload['model'] = array('first_model', 'second_model')

تا به اینجای کار شما با ساختار فریم‌ورک مورد بحث کاملا آشنا شده‌اید، ساختار اپلیکیشن‌هایی که با این فریم‌ورک ساخته می‌شود را کاملا درک کرده‌اید و نیز روش اعمال تنظیمات اولیه را فرا گرفته‌اید.

اولین مثال در فریم‌ورک Codeigniter 

حال برای تکمیل تمامی مباحث مطرح شده در این جلسه و دو جلسه‌ی قبل یک مثال عملی را شروع می‌کنیم.

تنظیمات و آماده‌سازی فریم‌ورک 

برای شروع نرم‌افزار زمپ را اجرا کرده و سرور آپاچی و مای‌اس‌کیو‌ال آن را در حالت فعال قرار دهید. سپس در پوشه‌ی htdocs یک پوشه به نام zoomit بسازید. در بالا روش Autoload کردن را به شما آموزش دادیم. اساسا این کار برای مواقعی اسـت که قصد دارید از یک کلاس خاص به طور دائم در پروژه‌ی خود استفاده کنید. از آنجا که در اینجا قصد داریم مثالی از کار با بانک داده را به شما آموزش دهیم پس نیاز خواهیم داشت تا کلاس اصلی آن که در مسیر application/config/database.php قرار گرفته را در حالت Autoload قرار دهیم. بانک‌ داده‌ای که در ادامه قصد داریم آن را بسازیم، helloworld نام خواهد داشت. برای ساخت این بانک داده به آدرس http://127.0.0.1/phpmyadmin رفته و مطابق آنچه در آموزش‌های پی‌اچ‌پی توضیح داده‌ بودیم، یک بانک اطلاعاتی جدید با نام helloworld بسازید. سپس در بخش sql، کد زیر را وارد کنید تا جداول مربوطه و اطلاعات پیش‌فرض بانک داده به آن اضافه شود.

CREATE TABLE `data` (
   `id` int(11) NOT NULL auto_increment,
   `title` varchar(255) NOT NULL,
   `text` text NOT NULL,
   PRIMARY KEY  (`id`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
 
 INSERT INTO `data` (`id`, `title`, `text`) VALUES(1, 'Hello World!', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla 
 sapien eros, lacinia eu, consectetur vel, dignissim et, massa. Praesent suscipit nunc vitae neque. Duis a ipsum. Nunc a erat. Praesent 
 nec libero. Phasellus lobortis, velit sed pharetra imperdiet, justo ipsum facilisis arcu, in eleifend elit nulla sit amet tellus. 
 Pellentesque molestie dui lacinia nulla. Sed vitae arcu at nisl sodales ultricies. Etiam mi ligula, consequat eget, elementum sed, 
 vulputate in, augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;');
 

حال باید فایل کانفیگ دیتابیس را که در مسیر application/config/database.php قرار دارد، باز کرده و آن را مثل زیر ویرایش کنید. دقت کنید نام کاربر بانک داده root بوده و رمزعبور نیز ندارد.

$db['default']['hostname'] = "localhost";
 $db['default']['username'] = "root";
 $db['default']['password'] = "";
 $db['default']['database'] = "helloworld";
 $db['default']['dbdriver'] = "mysql";
 

همچنین به منظور Autoload کردن کلاس بانک داده باید فایل application/config/autoload.php باز کنید و سپس کلاس database را همانند زیر در آرایه‌های بخش libraries قرار دهید. 

$autoload['libraries'] = array('database');
 

تغییر کنترلر پیش‌فرض فریم‌ورک

تا اینجای کار اگر مراحل را درست انجام داده باشید، با اجرای http://127.0.0.1/zoomit صفحه‌ی خوش‌آمدگویی پیش‌فرض فریم‌ورک Codeigniter را مشاهده خواهید کرد. کنترلر پیش‌فرض اجرا شده توسط فریم‌ورک، welcome.php نام دارد که در مسیر application/controllers قرار دارد. این فایل را حذف کرده و فایل application/config/routes.php را باز کنید. آرایه‌ای که کلید‌ آن default_controller اسـت را به صورت زیر تغییر داده و مقدار آن را helloworld قرار دهید.

$route['default_controller'] = "Helloworld"
 

برای اجرای صحیح این کنترلر در فریم‌ورک CI (از این پس برای اختصار، کلمه‌ی Codeigniter را با CI مشخص می‌کنیم.) نیاز به یک فایل نما یا ویو نیز خواهید داشت. این فایل‌ها همانطور که در جلسات قبل گفتیم به منظور نمایش بخش رابط کاربری به کار رفته و در مسیر application/view قرار داده می‌شوند. در این مسیر فایل welcome_message.php را نیز حذف کنید.

ساخت مدل Helloworld

ساخت مدل‌ها در CI اجباری نیست اما بهتر اسـت استفاده از آن‌ها را تمرین کنید. مدل‌ها در واقع کلاس‌های پی‌اچ‌پی محسوب می‌شوند که شامل توابعی برای بازگشت دادن اطلاعات از بانک‌های داده هستند. به مسیر application/models رفته و فایلی به نام helloworld_model.php را ایجاد کنید. در این فایل، یک کلاس به نام Helloworld_model ایجاد کرده و سپس تابع کانستراکتور و نیز یک تابع به نام getData برای دریافت اطلاعات را در آن ایجاد می‌کنیم. ما قصد داریم تا در تابع getData از توابع Active Record بانک داده استفاده کنیم چراکه این روش باعث افزایش دادن سرعت توسعه‌ی کدهای مرتبط با دیتابیس در هنگام کار با CI خواهد شد. یکی از مزایای فریم‌ورک‌ها همین مورد اسـت و می‌توان با استفاده از توابع ساده‌ شده، کوئری‌های مورد نظر را اجرا کرد. کد‌های زیر را در فایل مدل Helloworld_model.php قرار دهید:

<?php

class Helloworld_model extends Model

 

    function Helloworld_model()

    

        // Call the Model constructor

        parent::Model();

    

     

    function getData()

        

            //Query the data table for every record and row

            $query = $this->db->get('data');

             

            if ($query->num_rows() > 0)

            

                //show_error('Database is empty!');

            else

                return $query->result();

            

        

 

?>

ساخت کنترلر Helloworld

حال اجازه دهید کنترلر مورد نیاز برای این مثال را ایجاد کنیم. این کنترلر اطلاعات را به فایل ویو (نما) ارسال کرده و مدل مربوط به خود را نیز اجرا می‌کند. در مسیر application/controllers یک فایل جدید به نام helloworld.php ایجاد کنید. نام فایل بدون پسوند php. بسیار مهم اسـت و بعدا مفصلا در مورد ساختار نام‌گذاری کنترلر‌ها و مدل‌ها و ویوها در فریم‌ورک CI بحث خواهیم کرد. ساختن این کنترلر باعث می‌شود تا با اجرای آدرس http://127.0.0.1/zoomit/index.php/helloworld این کنترلر اجرا شود. دقت کنید که نام helloworld دقیقا نام فایل کنترلر اسـت. در فایل helloworld.php یک کلاس ایجاد کرده که نام این کلاس باید با نام فایل یکسان باشد. همچنین باید در این کلاس یک تابع به نام index ایجاد کنید. این تابع هنگامی که آدرس http://127.0.0.1/zoomit/index.php/helloworld اجرا شود، فراخوانی خواهد شد. علاوه بر این نام توابع را می‌توان در ادامه‌ی آدرس فوق اضافه کرد. به عنوان مثال اگر در کنترلر helloworld، تابعی به نام foo داشته باشیم، با اجرای آدرس http://127.0.0.1/zoomit/index.php/helloworld/foo می‌توانیم تابع یاد شده را فراخوانی کنیم. شیوه‌ی نام‌گذاری و ساختار آدرس URL در فریم‌ورک CI به شکل زیر اسـت:

http://host/codeignitordirectory/index.php/class/function.

در تابع index کنترلر باید مدل‌های مورد نظر را اجرا کرده و کوئری‌های مورد نیاز به دیتابیس را نیز اجرا و سپس نتیجه‌ی آن‌ها را به فایل‌های ویوو مربوطه ارسال کنیم. برای اجرای هر منبعی مثل کتابخانه‌ها (Libraries)، هلپرها، ویووها یا مدل‌ها در CI باید از load class استفاده کنیم. پس از اجرای یک مدل می‌توان به توابع آن دسترسی داشت. به منظور ارسال داده‌ها به فایل ویوو باید اطلاعات را در قالب یک آرایه تنظیم کرده و سپس آن آرایه را ارسال کنیم. کدهای زیر را در فایل کنترلر helloworld.php قرار دهید:

<?php

    class Helloworld extends Controller

        function index()

        

            $this->load->model('helloworld_model');

 

            $data['result'] = $this->helloworld_model-><span class="sql">getData</span>();

            $data['page_title'] = "CI Hello World App!";

 

            $this->load->view('helloworld_view',$data);

        

    

?>

اگر در این مرحله به آدرس http://127.0.0.1/zoomit/index.php/helloworld مراجعه کنیم، پروژه ما کار نخواهد کرد (تصویر زیر) چرا که هنوز فایل‌های مربوط به نمای سایت یا همان Viewها را ایجاد نکرده‌ایم. 

codeigniter

فایل‌ ویوو در واقع همان چیزی اسـت که کاربر آن را مشاهده کرده و در صورت لزوم با آن تعامل خواهید کرد. فایل نما می‌تواند شامل یک بخش کوچک از صفحه یا کل صفحه باشد. شما می‌توانید مجموعه‌ای از آرایه‌ها را از طریق آرگومان دوم تابع اجرای مدل، به فایل ویوو مورد نظر خود ارسال کنید. به منظور ایجاد فایل‌ نمای این پروژه در مسیر application/view فایلی به نام helloworld_view.php ایجاد کنید. در این فایل باید کدهای معمولی اچ‌تی‌ام‌ال را نوشته و سپس با کدهای پی‌اچ‌پی ساده، داده‌هایی که به صورت آرایه به این فایل ارسال شده را در جایگاهی مناسب از فایل ویوو قرار دهیم تا نهایتا به کاربر نمایش داده شوند. در آموزش پی‌اچ‌پی با حلقه‌ی foreach آشنا شدید. در اینجا قصد داریم داده‌های ارسال شده توسط کنترلر به این فایل ویوو را از طریق این حلقه به نمایش درآوریم. فایل helloworld_view.php را باز کرده و کدهای زیر را در آن قرار دهید:

<html>

    <head>

        <title><?=$page_title?></title>

    </head>

    <body>

        <?php foreach($result as $row):?>

        <h3><?=$row->title?></h3>

        <p><?=$row->text?></p>

        <br />

        <?php endforeach;?>

    </body>

</html>

ما از ساختاری شبیه به ساختار پی‌اچ‌پی استفاده کرده‌ایم چراکه این روش کارایی بالایی داشته و در وقت نیز صرفه‌جویی خواهد شد.

حال اگر آدرس http://127.0.0.1/zoomit/index.php/helloworld را در مرورگر خود اجرا کنید، پروژه شما باید به خوبی کار کند. 

نکات ضروری: اگر پیش از این با mvc و فریم‌ورک‌های دیگر کار نکرده باشید، شاید محتویات این جلسه برای شما کمی گنگ باشد ولی در این مورد جای نگرانی وجود ندارد. این اولین مثال عملی شما در فریم‌ورک Codeigniter بوده و رفته رفته با انجام تمرین‌های بیشتر و مطالعه‌ی جلسات آینده‌ی این سری آموزشی، به طور کامل به این کدها مسلط خواهید شد.

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


[ad_2]
لینک منبع
بازنشر: مفیدستان


ادامه مطلب ...