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