2012-07-11 4 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); 
    } 

} 

что недостающая функция!

так - что не так? почему он не работает? Я уже пробовал все решения, найденные с помощью Google, но ни один из них не работает:/

+0

Думаю, вы уже очистили свой кеш? rebuilt все lib, и т.д ..? – j0k

+0

Очевидно, я сделал это ... очищенный кеш с symfony cc, а также вручную удалив папку – khartvin

+1

Возможно, есть два класса sfGuardUserPeer. Попробуйте выполнить поиск «class sfGuardUserPeer» во всем коде. Убедитесь, что вы правы один (вы также можете неэриализовать файл cache/project_autoload.cache, который ищет путь к файлу класса). – glerendegui

ответ

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 класса, это будет разобраться в проблеме, Я сделал то же самое, когда получил эту ошибку, это сработало для меня.

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