我想在我的控制器中重新使用我的代码,所以我创建了一个服务。如果我在控制器内部使用方法它可以工作,但如果方法是由不同的控制器使用它确实工作。
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 ....
如何在服务中正确使用学说
编辑: 解决