مراحل ساخت یک فرم و اتصال آن به دیتابیس در کدایگنایتر
این آموزش با پیش فرض اینکه با قالب های HTML و ساختار CSS آشنایی دارید نوشته شده است.
1- مهم : ساختار فرم ها و گردش اطلاعات در معماری MVC فریمورک CI به این صورت است :
1- در واقع ابتدا در مرحله اول فرم به کاربر نمایش داده شده تا اطلاعات را وارد کند.
- اعتبار سنجی های جی کوئری
- ارسال آژاکس اطلاعات
- طراحی و ظاهر سازی فرم
- تعیین نام و تعداد فیلدها
2- سپس کنترلر اعتبار سنجی و تصفیه اطلاعات را انجام داده و آنرا برای ثبت در دیتابیس به مدل ارسال می کند.
- اعتبار سنجی سمت سرور در این قسمت انجام میشود.
- بررسی تعداد کاراکتر، نوع کاراکتر ورودی، انواع مختلف داده مانند ایمیل، آی پی و ...
- بررسی الزامی بودن فیلد
- بازگرداندن خطاهای فرم ثبت شده به صفحه اصلی فرم
- ارسال اطلاعات برای تایید به مدل
3- مدل دیتا را در دیتابیس ثبت کرده و گزارش عملیات را ارایه می کند.
- ثبت اطلاعات در دیتابیس
- هدایت کاربر به صفحه موفقیت آمیز بودن یا نبودن فرم
4- با بازگشت به صفحه قبل یا نمایش یک صفحه جدید، نتیجه عملیات نمایش داده میشود.
نمونه کار :
View (users/register.php) :
<?php
echo validation_errors('<div class="row">', '</div>');
echo form_open_multipart('forms/register_user', 'class="form-horizontal" id="user_register"');
echo form_input(array( 'class' => 'form-control', 'name' => 'user[name]', 'id' => 'input_name', 'placeholder' => 'نام', 'autocomplete' => 'off', 'type' => 'text', 'required'=>'required', 'value'=>set_value('user[name]')));
echo form_submit('submit', 'ثبت و ذخیره', array('class' =>'btn btn-success pull-left'));
echo form_close()
?>
Controller (controller/Forms.php) :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Forms extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
}
public function register_user()
{
$this->form_validation->set_rules('user[name]', 'نام', 'required', array('required' => 'لطفا %s. را تکمیل فرمایید.'));
if ($this->form_validation->run() === FALSE)
{
$this->load->view('admin/users/register', $data);
}
else
{
$this->load->model('Form_model');
$this->Form_model->register_user();
$this->load->view('users/form_success');
}
}
Model (models/Form_model):
<?php
class Form_model extends CI_Model
{
public function register_user()
{
$data = array(
'name' => $this->input->post('user[name]')
);
return $this->db->insert('users', $data);
}
}