我正在调整我的 Zend 框架以根据以下内容使用 phpass:http: //jonathanstreet.com/blog/adding-phpass-to-zend-framework/
按照他的步骤,我在他的 Acai_Auth_Adapter_DbTable 中遇到了这个错误:
Exception information:
Message: No entry is registered for key 'DbAdapter'
我该如何解决这个问题?非常感谢。
我正在调整我的 Zend 框架以根据以下内容使用 phpass:http: //jonathanstreet.com/blog/adding-phpass-to-zend-framework/
按照他的步骤,我在他的 Acai_Auth_Adapter_DbTable 中遇到了这个错误:
Exception information:
Message: No entry is registered for key 'DbAdapter'
我该如何解决这个问题?非常感谢。
您必须定义数据库适配器,该类应该通过使用keyAcai_Auth_Adapter_DbTable
存储数据库适配器来使用它。最好的地方是你的:Zend_Registry
DbAdapter
Bootstrap.php
protected function _initDb()
{
// add code to create a `Zend_Db_Adapter_xxx`
Zend_Registry::set('DbAdapter') = $dbAdapter;
}
如何设置您在Zend 框架下找到的数据库适配器:文档:Zend_Db_Adapter。
另一种方法是将数据库适配器作为参数传递:
// create a database adapter
$authAdapter = new Acai_Auth_Adapter_DbTable( $dbAdpater ):
我会推荐第一种方式,因为这样您就可以使用Zend_Registry::get('DbAdapter')
.
假设您的数据库适配器已在 application.ini 中设置,类似于:
resources.db.adapter = "pdo_Mysql"
resources.db.params.username = "music"
resources.db.params.password = "music"
resources.db.params.dbname = "music"
resources.db.isDefaultTableAdapter = true // add this line to make this adapter default, important if using more then one adapter.
在您的 bootstrap.php 中,您可以创建一个类似于以下内容的新方法:
protected function _initDbAdapter() {//can be named anything as long as it starts with _init
$db = new Zend_Config($this->getOptions('db'));//get all db adapter resources
Zend_Registry::set('DbAdapter', $db); //save to Zend_registry key DbAdapter
}
ByteNudger 关于如何使用注册表是正确的:
$authAdapter = new Acai_Auth_Adapter_DbTable( $dbAdpater );
然而,有一种方法可以避免所有这些引导业务。如果您只使用一个数据库适配器,请尝试:
//This will pass in the currently default adapter, if you only have one adapter...
$authAdapter = new Acai_Auth_Adapter_DbTable(Zend_Db::getDefaultAdapter);
希望这可以帮助。