Я пытаюсь создать форму смены пароля в cakephp 2.0.Я обнаружил поведение, которое EuroMark создал для версии 1.3, и сейчас мне сложно конвертировать этот код для работы с 2.0.Я знаю, что это как-то связано с компонентом Auth, так как в 2.0 были значительные изменения в этом компоненте.
public function validateCurrentPwd(Model $Model, $data) {
if (is_array($data)) {
$pwd = array_shift($data);
} else {
$pwd = $data;
}
$uid = null;
if ($Model->id) {
$uid = $Model->id;
} elseif (!empty($Model->data[$Model->alias]['id'])) {
$uid = $Model->data[$Model->alias]['id'];
} else {
return false;
}
if (class_exists('AuthExtComponent')) {
$this->Auth = new AuthExtComponent();
} elseif (class_exists($this->settings[$Model->alias]['auth'].'Component')) {
$auth = $this->settings[$Model->alias]['auth'].'Component';
$this->Auth = new $auth();
} else {
return true;
}
return $this->Auth->verifyUser($uid, $pwd);
}
Я получаю сообщение об ошибке в строке, которая читает $ this-> Auth = new $ auth ();Ошибка выглядит следующим образом:
Argument 1 passed to Component::__construct() must be an instance of ComponentCollection, none given, called in C:\UniServer\www\new_company_test\app\Model\Behavior\change_password.php on line 117 and defined [CORE\Cake\Controller\Component.php, line 77]
и
Undefined variable: collection [CORE\Cake\Controller\Component.php, line 78]
также выдает это
Call to undefined method AuthComponent::verifyUser() in C:\UniServer\www\new_company_test\app\Model\Behavior\change_password.php on line 121
Я не уверен, есть ли что-то еще, что нужнов сценарии, я полагаю, что нет, поскольку нет другого места, где используется Auth.
Есть какие-либо предложения о том, что мне нужно сделать, чтобы это работало?Любая помощь приветствуется.Спасибо