Здравствуйте,учу кохану 3.2, тренируюсь,нужно создать форму регистрации с валидацией, форму сделал, отвалидировал,узнал что можно это все сделать через ОРМ, переделал на ОРМ, подскажите как расширить метод rules() своими правилами валидации в ОРМ? допустим пользователь регистрируется, вводит данные, нужно проверить по бд поля passport_serial , passport_number через метод rules(), если оба поля совпадают, то валидация не пройдена.
контроллер:
class Controller_Reg extends Controller_Common
{
public function action_index()
{
$content = View::factory('/reg/show')->bind('reg', $reg)->bind('errors',$errors);
$reg = ORM::factory('users')->find_all();
if ($_POST) {
$name = Arr::get($_POST, 'name');
$fname = Arr::get($_POST, 'fname');
$lname = Arr::get($_POST, 'lname');
$passport_serial = Arr::get($_POST, 'passport_serial');
$passport_number = Arr::get($_POST, 'passport_number');
$user = (new Model_Users());
$user->name;
$user->fname;
$user->lname;
$user->passport_serial;
$user->passport_number;
$v = $user->validation();
if (!$v->check()) {
if((new Model_Users())->is_here($passport_serial,$passport_number))$content->errors='пользователь с таким номером паспорта уже существует';
else{
$user= ORM::factory('users')
->set('name',$name)
->set('fname',$fname)
->set('lname',$lname)
->set('passport_serial',$passport_serial)
->set('passport_number',$passport_number)
->create();
$content="успешно";
}}
else $content->errors = $v->errors('validation');
}
$this->template->content = $content;
}
}
модель:
<?php defined('SYSPATH') or die('No direct script access.');
class Model_Users extends ORM
{
protected $_table_name = 'users';
protected $_primary_key = 'id';
public function filters()
{
return array(
TRUE => array(
array('trim'),
),
);
}
public function rules() {
return array(
'name' => array(
array('not_empty'),
array('alpha', array(':value', TRUE))),
'fname' => array(
array('not_empty'),
array('alpha', array(':value', TRUE))),
'lname' => array(
array('not_empty'),
array('alpha', array(':value', TRUE))),
'passport_serial' => array(
array('not_empty'),
array('digit'),
array('exact_length', array(':value', 4))),
'passport_number' => array(
array('not_empty'),
array('digit'),
array('exact_length', array(':value', 6))
));
}
public function is_here($passport_serial,$passport_number){
$array=array('passport_serial'=>$passport_serial,'passport_number'=>$passport_number);
if(ORM::factory('users',$array))
return FALSE;
else return TRUE;
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Как сделать наценку исходя из реальная цена товара например: в цене от 10 до 100 добавит наценку в 10% и от 100 до 1000 5% и так далее:
Друзья, всем приветПодключаю yandexmaps api на js и есть кусок кода на php, задача в общем такая
Как отсортировать массив по значению value только с allias "SpoksdachiPoisk"