0

我想在我的控制器中再次重用我的代码,所以我创建了一个服务。如果我在控制器中使用方法,它可以工作,但如果方法由不同的控制器使用,它就不起作用。

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....

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

编辑:解决

4

0 回答 0