class Valide
{
public static $error = '';
protected static $filds, $number = 0;
/**
*/
public static function setForm($form)
{
$filds = \Config::get('local', 'filds');
if(in_array($form, $filds))
self::$filds = $filds[$form];
}
/**
*/
public static function getError($val, $patt)
{
$valids = \Config::get('local', 'valide');
$pattern = in_array($patt, $valids) ? $valids[$patt] : '#.+#u';
self::valide($pattern, $val);
}
/**
*/
public static function valide($pattern, $val)
{
if(!preg_match($pattern, $val))
self::$error .= ' поле '. self::$filds[self::$number] .' не корректно заполнено <br/>';
self::$number++;
}
}
вот настройки для класса
return array(
/**
* Настройка страницы
*/
'valide' => array( 'ru' => '#^[а-яё\s\d\/\.\,\-]{0,4}$#ui', //
'en' => '#^[a-z\s]{0,4}$#ui', //
'num'=> '#^[\d]+$#ui', //
),
/**
* Настройка страницы
*/
'filds' => array( 'region' => array('Регион'), //
'company' => array('Компания', 'Адрес', 'Телефон', 'Регион'), //
'photo' => array('Галерея', 'Линейка', 'Фото', 'Компания'), //
),
);
а так им пользуюсь. Тут нюанс, порядок проверок должен совпадать с порядком массива в настройках. В противном случае - неверное указание на поле и несоответствие.
public static function optionCompany($company, $address, $telephone, $region)
{
Valide::setForm('company');
Valide::getError($company, 'ru');
Valide::getError($address, 'ru');
Valide::getError($telephone, 'num');
Valide::getError($region, 'ru');
if(empty(Valide::$error))
Goods_model::addCompany($company, $address, $telephone, $region);
else
parent::$tpl->assign('error', Valide::$error);
}