所以我的问题是在Zend Framework 2中使用Doctrine 2.我正确安装了Doctrine,当我尝试在控制器中使用它时,我收到了这个错误:
C:\wamp2\www\zf2\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php:518
和此:
Zend\Mvc\Controller\PluginManager::get was unable to fetch or create an instance for getObjectManager
这是我的控制者:
class BlogController extends AbstractActionController
{
public function blogAction()
{
$article = $this->getObjectManager()->getRepository('\Application\Entity\Article')->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; ?>
对于我遵循此tutorial
的配置答案 0 :(得分:3)
可悲的是,你没有关注教程,否则你会注意到在教程中他们在Controller中定义了一个函数getObjectManager()
。您没有定义此函数,因此Controller假定它是ControllerPlugin
,因此要求ControllerPluginManager
为此插件创建一个实例。但是没有注册这样的插件,这就是你看到这个错误的原因。
TL / DR - &gt;一步一步地完成教程。了解你在做什么,不要盲目地复制粘贴你认为重要的行。
答案 1 :(得分:0)
您忘记为您的控制器实施getObjectManager
:
protected function getObjectManager()
{
if (!$this->_objectManager) {
$this->_objectManager = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
}
return $this->_objectManager;
}
此方法包含在您提及的教程中IndexController
的末尾。