У меня есть следующая настройка правил проверки. По какой-то причине блок 'on' => 'create'
не работает. Условия, которые должны быть реализованы, - это стандартное создание/изменение в отношении электронной почты. Кроме того, в разделе редактирования я получаю сообщение об ошибке с блока 'on' => 'create'
.Проверка электронной почты в cakephp Модель
Как проверить адрес электронной почты? Я использую CakePHP v 2.6.1.
public $validate = array(
'email' => array(
'required' => array(
'rule' => array('email'),
'message' => 'Kindly provide your email for verification.'
),
'maxLength' => array(
'rule' => array('maxLength', 255),
'message' => 'Email cannot be more than 255 characters.'
),
'editunique' => array(
'rule' => array('editunique'),
'message' => 'Provided Email address already exists.',
'on' => 'update'
),
'unique' => array(
'rule' => 'isUnique',
'message' => 'Provided Email already exists.',
'on' => 'create'
)
)
);
public function editunique($email) {
// email should be one and of the logged in user only.
if ($this->find('count', array(
'conditions' => array(
$this->alias . '.id <>' => $this->data[$this->alias]['id'],
$this->alias . '.email' => $email
)
)) > 1) {
return false;
}
}
Кроме того, я не получаю значение $this->data[$this->alias]['id']
.
My Controller имеет следующий раздел:
if ($this->Client->hasAny(array('Client.id' => base64_decode(trim($this->request->query['client_id']))))){
if ($this->request->is('ajax') && $this->request->is('post')){
$this->Client->create();
$this->Client->id = base64_decode(trim($this->request->query['client_id']));
$this->Client->set($this->request->data);
// validate
if($this->Client->validates()) {
// save the data after validation
if($this->Client->save($this->request->data)){
}
}
}
}
нормально, чтобы получить '$ this-> данные [$ this-> псевдоним] [ 'ID']' значение, изменение на '$ this-> id'. Таким образом, получение идентификатора набора теперь, но проблема с созданием сохраняется. – Sp0T
Что вы пытаетесь сделать с помощью своего пользовательского правила проверки? Это похоже на репликацию собственного правила проверки подлинности 'isUnique' Cake. – drmonkeyninja
Да, это для уникальности, но при обновлении деталей профиля. На самом деле я воспользовался этой функцией - http://stackoverflow.com/a/20203538/3007408. Хотя этот ответ говорит использовать перед сохранением, я использую его во время проверки. – Sp0T