2012-07-11 83 views
0

所以...我基本上按照practical symfony book,遇到了下面的問題。 我正確地(我猜)安裝了sfGuardPlugin,建立了模型,sqls等,創建了用戶並試圖用輸入的用戶名和密碼登錄。在symfony 1.4中訪問擴展類

我得到了以下錯誤消息:

Fatal error: Call to undefined method sfGuardUserPeer::retrieveByUsername() in /***/plugins/sfGuardPlugin/lib/validator/sfGuardValidatorUser.class.php on line 53

它看起來相當怪我,因爲sfGuardValidatorUser類的問題的一部分是這樣的:

// user exists? 
if ($user = sfGuardUserPeer::retrieveByUsername($username)) 
{ 
    // password is ok? 
    if ($user->getIsActive() && $user->checkPassword($password)) 
    { 
    return array_merge($values, array('user' => $user)); 
    } 
} 

而sfGuardUserPeer只有空類:

class sfGuardUserPeer extends PluginsfGuardUserPeer 
{ 
} 

延伸PluginsfGuardUserPeer,所以我檢查出來太:

class PluginsfGuardUserPeer extends BasesfGuardUserPeer 
{ 
    public static function retrieveByUsername($username, $isActive = true) 
    { 
    $c = new Criteria(); 
    $c->add(self::USERNAME, $username); 
    $c->add(self::IS_ACTIVE, $isActive); 

    return self::doSelectOne($c); 
    } 

} 

這就是失蹤的功能!

那麼 - 什麼是錯的?爲什麼它不起作用? 我已經嘗試了所有與谷歌解決方案,但沒有一個工作:/

+0

我想你已經清除你的緩存?重建所有lib等。? – j0k 2012-07-11 10:22:18

+0

顯然我這樣做...清除緩存與symfony cc,以及手動刪除文件夾 – khartvin 2012-07-11 10:29:43

+1

也許有兩個sfGuardUserPeer類。嘗試在所有代碼中搜索「class sfGuardUserPeer」。確保你正在向一個正確的方向發展(也可以反序列化搜索類文件路徑的cache/project_autoload.cache文件)。 – glerendegui 2012-07-11 18:54:44

回答

1

終於找到它了!

symfony propel:build-model 

任務不必要產生的sfGuard班從位於插件目錄模式文件中的模型目錄,而所有的類都已經存在於sfGuard文件夾中。

吉茲,不應該在這樣一個發達的框架和插件的發生......

1

簡單地說是

public static function retrieveByUsername($username, $isActive = true) 
    { 
    $c = new Criteria(); 
    $c->add(self::USERNAME, $username); 
    $c->add(self::IS_ACTIVE, $isActive); 

    return self::doSelectOne($c); 
    } 

代碼到你sfGuardUserPeer類,這將整理出來的問題,我做了同樣的,當我得到這個錯誤,它爲我工作..