所以我的问题是将 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
末尾。