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