ตัวอย่างการเขียน custom rule validation
<?php
class FormValidationCustomRules extends CI_Controller
{
public function __construct () {
parent::__construct () ;
// Your own constructor code
}
public function uploadJPEG () {
$this->form_validation->set_rules ('cover', 'JPEG Upload', 'trim|xss_clean') ;
if ($this->form_validation->run () == true) {
$fileDir = 'assets/contents/';
$fileName = date ('U') . '.jpeg';
$config = [
'allowed_types' => 'jfi|jfif|jif|jpe|jpeg|jpg',
'file_ext_tolower' => true,
'file_name' => $fileName,
'max_size' => '10000',
'overwrite' => false,
'upload_path' => $fileDir,
];
$this->load->library ('upload', $config) ;
if ($this->upload->do_upload ('cover', false)) {
$this->uploadFile = $fileDir . $fileName;
return true;
} else {
$this->form_validation->set_message ('uploadJPEG', $data['error'] = $this->upload->display_errors ()) ;
if ($_FILES['cover']['error'] != 4) {
return false;
}
}
}
return false;
}
public function index () {
$this->load->library ('form_validation') ;
$formValidation = [
[
'field' => 'cover',
'label' => 'JPEG Upload',
'rules' => 'callback_uploadJPEG',
],
];
$this->form_validation->set_rules ($formValidation) ;
if ($this->form_validation->run () == true) {
echo 'upload file to ', $this->uploadFile, '<br><img alt="', $this->uploadFile, '" class="img-thumbnail" src="../', $this->uploadFile, '">';
}
$this->load->view ('FormValidation/CustomRules') ;
}
}
หลักการคือ
- สร้าง function ขึ้นมา แล้วเรียกใช้โดยมี callback_ นำหน้า
- ส่ง message กลับมาโดยใช้ $this->form_validation->set_message (‘function name’,’ข้อความ’)