Столкнулся вот с такой проблемой, к примеру есть задача в админ панеле отредактировать данные пользователя
Редактирование данных:$UsersModel->login = $_POST['login'];
$UsersModel->name = $_POST['name'];
$UsersModel->password = $_POST['password'];
$UsersModel->special_password = $_POST['special_password'];
$UsersModel->mail = $_POST['mail'];
$UsersModel->active = $_POST['active'];
$UsersModel->trusted = $_POST['trusted'];
$UsersModel->group = $_POST['group'];
$UsersModel->scenario = 'control';
Натыкаюсь на следующие:
Приходят данные, и идут себе на валидацию, валидация честно отрабатывает и получаю проблему:
- такой логин уже есть
- такой mail уже есть
- пароли я храню в cryp() и в форме отображается cryp, однако пароль можно сбросить введя например 123456 и пароль станет таким. Однако если администратор не хочет сбрасывать пароль, то прилетает крипт и валидацию не проходит, хотя-бы по длине символов.
Подскажите пожалуйста как решить проблему с валидацией данных пользователя. Точнее как отредактировать данные таким образом, что бы если не не меняется логин или почта, то не срабатывало правило такой логин/мэйл уже есть.
Правила валидации:
// редактирование в админ панели
array('login', 'unique', 'className' => 'UsersModel', 'attributeName' => 'login', 'message'=>$this->getErrorMessage('login'), 'on'=>'control'),
array('login', 'match', 'allowEmpty'=>false, 'pattern'=>'/^([A-Za-z0-9-_$]){3,16}$/', 'message'=>$this->getErrorMessage('is_login'), 'on'=>'control'),
array('name', 'match', 'allowEmpty'=>false, 'pattern'=>'/[a-zA-Zа-яА-ЯёЁ]+\s{1}+[a-zA-Zа-яА-ЯёЁ]+$/u', 'message'=>$this->getErrorMessage('name'), 'on'=>'control'),
array('password,special_password', 'match', 'allowEmpty'=>false, 'pattern'=>'/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z-_!@,#$%]{6,16}$/', 'message'=>$this->getErrorMessage('is_password'), 'on'=>'control'),
array('special_password', 'coincidePassword', 'message'=>$this->getErrorMessage('coincide_password'), 'on'=>'control'),
array('mail', 'is_mail', 'on'=>'control'),