Symfony2在控制器方法中的服务容器中使用Doctrine

时间:2013-05-05 08:12:09

标签: symfony doctrine-orm

我想在我的控制器中重新使用我的代码,所以我创建了一个服务。如果我在控制器内部使用方法它可以工作,但如果方法是由不同的控制器使用它确实工作。

function testAction()
{
      $em = $this->getDoctrine()->getEntityManager();
      $product = $em->getRepository('AcmeStoreBundle:Product')->findAll();
}

如果我使用不同的控制器创建服务

,则此代码无法正常工作
services:
 test:
      class: Acme\BlogBundle\Controller\ClockController
      arguments: 
        entityManager: "@doctrine.orm.entity_manager"

使用testAction方法将其添加到控制器

use Symfony\Component\DependencyInjection\ContainerAware;
use Doctrine\ORM\EntityManager;

这给我带来了这个错误

Call to a member function has() on a non-object in /var/www/Acme/vendor/symfony
/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php on line 191

如果我将控制器方法更改为此

$em = $this->container->get('doctrine.orm.entity_manager');

我得到了

Call to a member function get() on a non-object in..

召回$ em = $ this ....

如何在服务中正确使用学说

编辑: 解决

0 个答案:

没有答案
相关问题