无法从库中获取存储库

时间:2017-02-16 15:14:00

标签: symfony

我在symfony项目中创建了一个库,位于bundle下的Library文件夹中。这是代码的样子:

namespace AppBundle\Library;

use Symfony\Component\DependencyInjection\ContainerInterface as Container;
use Doctrine\Common\Persistence\ObjectManager;

class MooLibrary
{
    private $container  = null;
    private $em         = null;

    public function __construct(ObjectManager $em, Container $container)
    {
      $this->container    = $container;
      $this->em           = $em;
    }

    public function getTypeContent($type = null, $id = 0)
    {
        $content = array();
        $dataClass = ucfirst($type);

        $content = $this->em->getRepository('AppBundle:Post')->findOneById($id);

        return $content;
    }
}

我还在服务中添加了:

post_type:
        class:  AppBundle\Library\MooLibrary
        arguments: [ @doctrine.orm.entity_manager, @service_container ]

这给了我一个错误:

  

不在对象上下文中时使用$ this

1 个答案:

答案 0 :(得分:2)

我不知道您的完整yml文件,但您已在service部分中对其进行了定义。

services:
    moolib:
        class: AppBundle\Library\MooLibrary
        arguments: [ @doctrine.orm.entity_manager, @service_container ]

你的班级看起来正确。

然后你可以用:

来调用它
$this->get('moolib');

另一件事是,有一些规范应该如何构建Symfony应用程序。

https://symfony.com/doc/current/bundles/best_practices.html

通常情况下,您创建的文件夹DependencyInjection是最佳做法,但它是可选的。