2015-12-12 2 views
0

Я пытаюсь добавить подтверждение на функцию смены пароля, но это не сработает.Проверка не работает - CakePHP 3

Я добавил

->add('repeat_password', [ 
          'equalToPassword' => [ 
               'rule' => function ($value, $context) { 
                return $value === $context['data']['new_password']; 
               }, 
               'message' => __("Your password confirm must match with your password.") 
               ] 
         ]); 

к Users модели и в моем контроллере

$user = $this->Users->get($this->_User['user_id']); 
     if ($this->request->is(['patch', 'post', 'put'])) { 
      $user = $this->Users->createEntity($user, ['password' => $this->request->data['repeat_password']]); 
      // $verify = (new DefaultPasswordHasher)->check($this->request->data['old_password'], $user->password); 
      // debug($verify); 
      //if ($verify) { 
      if ($this->Users->save($user)) { 
       $this->Flash->success('The password has been changed'); 
       $this->redirect(['action' => 'index']); 

      } else { 
       $this->Flash->error('Password could not be issued'); 

      } 
      } 
     // else { 

      // $this->Flash->error('Password Do not match'); 

     // } 
    // } 
    } 

Это сохраняет данные без проверки. Каково решение ?

+1

Пожалуйста, пост код для метода 'CreateEntity()'. –

+0

Вы можете распечатать значение своего '$ user' – Beginner

ответ

1

Не проверив свой код полностью, моя первая мысль состоит в том, что CakePHP 3 уже предоставляет встроенный валидатор compareWith для этой цели.

Попробуйте установить правила проверки следующим образом:

$validator->add('repeat_password', [ 
    'compareWith' => [ 
     'rule' => ['compareWith', 'new_password'], 
     'message' => __("Your password confirm must match with your password.") 

    ] 
]); 

Кроме того, проверьте, что оба new_password и repeat_password устанавливаются true в $_accessible массиве.

+0

Я его использовал, но также не работает –

0
public $validate = array(

    'password' => array(
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'A password is required' 
     ), 
     'min_length' => array(
      'rule' => array('minLength', '6'), 
      'message' => 'Password must have a mimimum of 6 characters' 
     ) 
    ), 

    'password_confirm' => array(
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'Please confirm your password' 
     ), 
     'equaltofield' => array(
      'rule' => array('equaltofield','password'), 
      'message' => 'Both passwords must match.' 
     ) 
    ), 




) 

пожалуйста, написать код в модели более подробно, пожалуйста, проверьте ссылку ниже http://miftyisbored.com/a-complete-login-and-authentication-application-tutorial-for-cakephp-2-3/

Смежные вопросы