PluginManager::get 无法为 getObjectManager 获取或创建实例



所以我的问题是将 Doctrine 2 与 Zend Framework 2 一起使用。我正确安装了 Doctrine,当我尝试在控制器中使用它时,出现此错误:

C:wamp2wwwzf2vendorzendframeworkzendframeworklibraryZendServiceManagerServiceManager.php:518

而这个:

ZendMvcControllerPluginManager::get was unable to fetch or create an instance for getObjectManager

这是我的控制器:

class BlogController extends AbstractActionController
{
    public function blogAction()
    {
        $article = $this->getObjectManager()->getRepository('ApplicationEntityArticle')->findAll();
        return new ViewModel(array('article' => $article));
    }
}

这是我的观点:

<?php if (isset($article)) : ?>
    <?php foreach($article as $articles): ?>
        <div class="col-lg-12 text-center">
            <img class="img-responsive img-border img-full" src="" alt="">
            <h2><?php echo $articles->getTitle(); ?>
                <br>
                <small><?php echo $articles->getDate(); ?></small>
            </h2>
            <p><?php echo $articles->getContent(); ?></p>
            <a href="<?php echo $this->url('article') ?>" class="btn btn-default btn-lg">Read More</a>
            <hr>
        </div>
    <?php endforeach; ?>
<?php endif; ?>

对于配置,我遵循了本教程

遗憾的是,您没有遵循本教程,否则您会注意到,在教程中,它们在控制器内部getObjectManager()定义了一个函数。您没有定义此函数,因此控制器假定这是一个ControllerPlugin,因此要求ControllerPluginManager为此插件创建一个实例。但是从来没有注册过这样的插件,这就是您看到此错误的原因。

TL/DR ->逐步完成本教程。了解你在做什么,不要盲目复制粘贴你认为重要的行。

您忘记为控制器实现getObjectManager

protected function getObjectManager()
    {
        if (!$this->_objectManager) {
            $this->_objectManager = $this->getServiceLocator()->get('DoctrineORMEntityManager');
        }
        return $this->_objectManager;
    }

此方法包含在您提到的教程中IndexController末尾。

相关内容

  • 没有找到相关文章

最新更新