[eluser]crazytereza[/eluser]
1. Here is my autoload file:
$autoload['libraries'] = array('database','session','lib_view','lib_mng','form_validation');
2. MY_Form_validation class:
<?php
/** Расширение класса валидации форм
* @author
* @copyright 2010
*/
if (!defined ('BASEPATH')) exit ('No direct script access allowed');
class MY_Form_Validation extends CI_Form_validation{
function __construct() {
parent::CI_Form_validation();
$CI=&get;_instance();
$CI->lang->load('validation_new'); // Information about new mistakes-‘validation_new’
echo "Constructor works!!! ";
}
/**
* Функция проверки на наличие маленьких букв и цифр
*/
function az_numeric($str){
return (!preg_match("/^([a-z0-9])+$/i",$str)) ? FALSE : TRUE;
}
/**
* Валидация URL
*/
function valid_url(){
return (!preg_match('/(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:;.?+=&%@!\-\/]))?/',$str)) ? FALSE : TRUE;
}
/**
* Валидное название
*/
function valid_title($str){
return(!preg_match('/^[А-Яа-яЁё\w\d\s\.\,\+\-\_\!\?\#\%\@\№\/\(\)\[\]\:
&\$\*]{1,250}$/',$str)) ? FALSE : TRUE;
}
/**
* Проверка на уникальность
*/
function uniq ($str,$param){
//Объект CI
$CI=&get;_instance();
//Имя таблицы
$tname=str_replace('_id','s',$param);
$CI->db->where($param,$str);
return ($CI->db->count_all_results($tname)==0);
}
}
?>
3. Reference form_validation in model:
class Crud extends Model{
var $table='';//table name
var $idkey='id';//Key ID
var $add_rules=array();//Validation rules for adding
var $edit_rules=array();//Validation rules for editing
//Construstor
function Crud(){
parent::Model();
}
//Добавление
function add(){
$this->form_validation->set_rules($this->add_rules);
if ($this->form_validation->run()){
$data=array();
foreach($this->add_rules as $one){
$f=$one['field'];
$data[$f]=$this->input->post($f);
}
$this->db->insert($this->table,$data);
return $this->db->insert_id();
}
else{
return FALSE;}
}
class mdl_link extends Crud{
var$table='links';//table name
var $idkey='link_id';
var $add_rules=array(
array(
'field'=>'link_id',
'label'=>'ID ссылки',
'rules'=>'az_numeric|required|uniq[link_id]',
),
array(
'field'=>'descr',
'label'=>'Описание',
'rules'=>'required|valid_title',
),
array(
'field'=>'url',
'label'=>'URL',
'rules'=>'required|valid_url',
),
);
}
In controller then I use mdl_link model
Thank you