Zend登录问题

时间:2011-09-22 12:11:37

标签: php zend-framework zend-db zend-db-table

我是Zend Framwork的新手。我写了一个登录动作如下:

public function authAction()
{
    $request = $this->getRequest();
    $registry = Zend_Registry::getInstance();
    $auth = Zend_Auth::getInstance();
    $DB = $registry['rdvs'];
    $authAdapter = new Zend_Auth_Adapter_DbTable($DB);
    $authAdapter->setTableName('user')
                ->setIdentityColumn('user_name')
                ->setCredentialColumn('password');    

    // Set the input credential values
    $uname = $request->getParam('username');
    $paswd = $request->getParam('pwd');
    $authAdapter->setIdentity($uname);
    $authAdapter->setCredential(md5($paswd));

    // Perform the authentication query, saving the result
    $result = $auth->authenticate($authAdapter);

    if($result->isValid()){
      //print_r($result);   
      $data = $authAdapter->getResultRowObject(null,'password');
      $auth->getStorage()->write($data);
      $this->_redirect('/service/');
    }else{
      $this->_redirect('/index/');
    }

}

当我浏览我的网络应用程序然后它的给定例外: 消息:没有数据库适配器 我不明白我在哪里使用数据库或phpmyadmin连接。

2 个答案:

答案 0 :(得分:0)

可能是注册表对象中出现了一些问题。相反,您可以创建数据库连接时调用Zend_Db_Table_Abstract :: setDefaultAdapter($ db)而不是将其放入注册表。如果没有明确地给出数据库适配器,ZF中的大多数组件都会在那里查看。

答案 1 :(得分:0)

替换

$DB = $registry['rdvs'];

$DB = Zend_Db_Table::getDefaultAdapter();

我希望您在application.ini中正确设置数据库配置,如果没有那么

在application.ini的[production]部分中添加以下内容,并相应地设置值,如username,password,dbname

resources.db.adapter = PDO_MYSQL
resources.db.isDefaultAdapter = true
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = 
resources.db.params.dbname = myDbName