2013-01-02 49 views
0

可能重複:
Fatal error: Call to undefined method CookieComponent::del()訪問從插件CakePHP的保護方法

我創建一個使用登錄方法從我SiteUsers控制器插件,但我得到的錯誤信息:

調用未定義的方法SiteUsersController :: _ doLogIn()

插件網站用戶控制器:

class SiteUsersController extends AppController { 

public $name = 'SiteUsers'; 


/** 
* login_competition 
* 
*/ 
public function login_challenge() { 

    $this->autoRender = false; 

    if (!$this->_doLogIn($this->request->data['SiteUser'])) { 

      $this->Session->setFlash('ERROR'); 

     } 

    } 

    $this->redirect('/'); 
} 

} 

網站用戶控制器在主應用程序

class SiteUsersController extends AppController { 

public $name = 'SiteUsers'; 

/** 
* _doLogIn() 
* 
* @param unknown_type $data 
* @return string|string 
*/ 
protected function _doLogIn($data) { 

    $this->_user = $this->SiteUser->getUserByEmailPassword(Sanitize::clean($data)); 

    if (!empty($this->_user)) { 

     $this->Session->Write('SiteUser.id', $this->_user['SiteUser']['id']); 
     $this->Session->Write('SiteUser.first_name', $this->_user['SiteUser']['first_name']); 
     $this->Session->Write('SiteUser.username', $this->_user['SiteUser']['username']); 

     return true; 
    } 

    return false; 

} 


} 

回答

0

我建議你到你_doLogIn進入組件。這樣你就不需要公開它,用戶也不會直接通過瀏覽器訪問它,並且它可以被所有的控制器使用。

當前的_doLogIn可以被重寫爲使用新的組件方法,因此如果在全站範圍內廣泛使用它沒有什麼大不了的。

以防萬一;)http://book.cakephp.org/2.0/en/controllers/components.html

+1

這是不可能的用戶訪問受保護的方法,如蛋糕的行動。除此之外,組件是要走的路。 – dogmatic69