【问题标题】:Zend: Accessing model from Bootstrap raises an exceptionZend:从 Bootstrap 访问模型引发异常
【发布时间】:2012-02-08 21:52:49
【问题描述】:

这是我在 Bootstrap 中的代码:

public function _initRegistry()
{
    $systemConfigModel = new Application_Model_DbTable_SystemConfig();
    Zend_Registry::set('config', $systemConfigModel->getSystemConfig());
}

这是我得到的一个例外:

( ! ) Fatal error: Uncaught exception 'Zend_Db_Table_Exception' with message 'No adapter found for Application_Model_DbTable_SystemConfig' in /usr/share/php5/Zend/Db/Table/Abstract.php on line 755
( ! ) Zend_Db_Table_Exception: No adapter found for Application_Model_DbTable_SystemConfig in /usr/share/php5/Zend/Db/Table/Abstract.php on line 755

如果我在BaseController 中调用它,它就可以正常工作。看起来我在application.ini 中指定的 PDO 适配器在执行 Bootstrap 时尚未初始化(奇怪?)。我应该怎么做才能使代码在 Bootstrap 中工作?是否需要用 Zend_Db_Table::setDefaultAdapter(); 创建和设置适配器?

我问是因为如果代码不在 Bootstrap 中,则需要在两个不同的地方复制它,而且它看起来也属于 Bootstrap。

【问题讨论】:

    标签: exception zend-framework model bootstrapping


    【解决方案1】:

    您是对的,在引导期间,您的数据库的 Zend 应用程序资源尚未初始化。

    尝试如下更改引导方法,以便显式引导 db 资源。

    public function _initRegistry()
    {
        $this->bootstrap('db'); // Bootstrap the db resource from configuration
    
        $db = $this->getResource('db'); // get the db object here, if necessary
    
        // now that you have initialized the db resource, you can use your dbtable object
        $systemConfigModel = new Application_Model_DbTable_SystemConfig();
        Zend_Registry::set('config', $systemConfigModel->getSystemConfig());
    }
    

    【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2015-12-08
    • 2017-01-17
    • 2014-06-13
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    相关资源
    最近更新 更多