Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml [Symfony 2]在服务中使用条令_Xml_Symfony_Doctrine Orm_Doctrine - Fatal编程技术网

Xml [Symfony 2]在服务中使用条令

Xml [Symfony 2]在服务中使用条令,xml,symfony,doctrine-orm,doctrine,Xml,Symfony,Doctrine Orm,Doctrine,我在我的项目中创建了一个新服务。此服务是用XML配置的。 我想使用EntityManager来检索服务中的som数据,但我无法将“连接”原则连接到我的服务。 目前,我有以下代码: services.xml 使用此代码,我遇到了一个奇怪的错误。似乎Symfony认为我的服务是一种新的教义: 未定义的方法“FullNoPrivateBytle”。方法名称必须以 和findBy或findOneBy在一起!500内部服务器错误- BadMethodCallException 有人能帮我配置我的服务吗?

我在我的项目中创建了一个新服务。此服务是用XML配置的。 我想使用EntityManager来检索服务中的som数据,但我无法将“连接”原则连接到我的服务。 目前,我有以下代码:

services.xml

使用此代码,我遇到了一个奇怪的错误。似乎Symfony认为我的服务是一种新的教义:

未定义的方法“FullNoPrivateBytle”。方法名称必须以 和findBy或findOneBy在一起!500内部服务器错误- BadMethodCallException

有人能帮我配置我的服务吗?
非常感谢。

您的实现在几个不同的方面被混淆了

  • 工厂方法返回的对象必须与
    属性中定义的类型相同-因此继承自
    条令\ORM\EntityRepository
    (这就是“奇怪错误”的来源)
  • 定义一个服务,然后让它扩展
    containerware
    是没有意义的。定义服务的关键是通过配置注入依赖项,而不是在运行时从容器中提取依赖项
  • 命名不一致-您的服务引用了
    Site\ProductBundle\Search\SphinxSearch
    ,但您的类实际上被命名为
    Dada\FilmsBundle\Search\DataSearch
  • 注入
    实体存储有两个选项:在此处尝试使用工厂,或使用

    工厂方法应该是这样的(假设正确的存储库是
    ProductRepository

    <service
        id="repository.product"
        class="Site\ProductBundle\Entity\ProductRepository"
        factory-service="doctrine.orm.entity_manager"
        factory-method="getRepository"
    >
        <argument>Site\ProductBundle\Entity\Product</argument>
    </service>
    
    <service id="SiteService.search" class="Site\ProductBundle\Search\SphinxSearch">
       <argument type="service" id="repository.product"/>
    </service>
    
    
    站点\产品包\实体\产品
    
    表达式语法如下所示

    <service id="SiteService.search" class="Site\ProductBundle\Search\SphinxSearch">
       <argument type="expression">service('doctrine.orm.entity_manager').getRepository('ProductBundle:Product')</argument>
    </service>
    
    
    服务('doctrine.orm.entity_manager').getRepository('ProductBundle:Product'))
    
    然后在你的服务课上

    <?php
    
    namespace Site\ProductBundle\Search;
    
    class SphinxSearch
    {
        /**
         * @var \Site\ProductBundle\Entity\ProductRepository
         */
        protected $repository;
    
        public function __construct(ProductRepository $repository) {
            $this->repository = $repository;
        }
    
        private function getResultsFromId($idlist) {
            // Do whatever with $this->repository
        }
    }
    

    您的实现在几个不同的方面存在混乱

  • 工厂方法返回的对象必须与
    属性中定义的类型相同-因此继承自
    条令\ORM\EntityRepository
    (这就是“奇怪错误”的来源)
  • 定义一个服务,然后让它扩展
    containerware
    ,是没有意义的。定义服务的关键是通过配置注入依赖项,而不是在运行时从容器中提取依赖项
  • 命名不一致-您的服务引用了
    Site\ProductBundle\Search\SphinxSearch
    ,但您的类实际上被命名为
    Dada\FilmsBundle\Search\DataSearch
  • 注入
    实体存储有两个选项:在此处尝试使用工厂,或使用

    工厂方法应该是这样的(假设正确的存储库是
    ProductRepository

    <service
        id="repository.product"
        class="Site\ProductBundle\Entity\ProductRepository"
        factory-service="doctrine.orm.entity_manager"
        factory-method="getRepository"
    >
        <argument>Site\ProductBundle\Entity\Product</argument>
    </service>
    
    <service id="SiteService.search" class="Site\ProductBundle\Search\SphinxSearch">
       <argument type="service" id="repository.product"/>
    </service>
    
    
    站点\产品包\实体\产品
    
    表达式语法如下所示

    <service id="SiteService.search" class="Site\ProductBundle\Search\SphinxSearch">
       <argument type="expression">service('doctrine.orm.entity_manager').getRepository('ProductBundle:Product')</argument>
    </service>
    
    
    服务('doctrine.orm.entity_manager').getRepository('ProductBundle:Product'))
    
    然后在你的服务课上

    <?php
    
    namespace Site\ProductBundle\Search;
    
    class SphinxSearch
    {
        /**
         * @var \Site\ProductBundle\Entity\ProductRepository
         */
        protected $repository;
    
        public function __construct(ProductRepository $repository) {
            $this->repository = $repository;
        }
    
        private function getResultsFromId($idlist) {
            // Do whatever with $this->repository
        }
    }
    

    您的实现在几个不同的方面存在混乱

  • 工厂方法返回的对象必须与
    属性中定义的类型相同-因此继承自
    条令\ORM\EntityRepository
    (这就是“奇怪错误”的来源)
  • 定义一个服务,然后让它扩展
    containerware
    ,是没有意义的。定义服务的关键是通过配置注入依赖项,而不是在运行时从容器中提取依赖项
  • 命名不一致-您的服务引用了
    Site\ProductBundle\Search\SphinxSearch
    ,但您的类实际上被命名为
    Dada\FilmsBundle\Search\DataSearch
  • 注入
    实体存储有两个选项:在此处尝试使用工厂,或使用

    工厂方法应该是这样的(假设正确的存储库是
    ProductRepository

    <service
        id="repository.product"
        class="Site\ProductBundle\Entity\ProductRepository"
        factory-service="doctrine.orm.entity_manager"
        factory-method="getRepository"
    >
        <argument>Site\ProductBundle\Entity\Product</argument>
    </service>
    
    <service id="SiteService.search" class="Site\ProductBundle\Search\SphinxSearch">
       <argument type="service" id="repository.product"/>
    </service>
    
    
    站点\产品包\实体\产品
    
    表达式语法如下所示

    <service id="SiteService.search" class="Site\ProductBundle\Search\SphinxSearch">
       <argument type="expression">service('doctrine.orm.entity_manager').getRepository('ProductBundle:Product')</argument>
    </service>
    
    
    服务('doctrine.orm.entity_manager').getRepository('ProductBundle:Product'))
    
    然后在你的服务课上

    <?php
    
    namespace Site\ProductBundle\Search;
    
    class SphinxSearch
    {
        /**
         * @var \Site\ProductBundle\Entity\ProductRepository
         */
        protected $repository;
    
        public function __construct(ProductRepository $repository) {
            $this->repository = $repository;
        }
    
        private function getResultsFromId($idlist) {
            // Do whatever with $this->repository
        }
    }
    

    您的实现在几个不同的方面存在混乱

  • 工厂方法返回的对象必须与
    属性中定义的类型相同-因此继承自
    条令\ORM\EntityRepository
    (这就是“奇怪错误”的来源)
  • 定义一个服务,然后让它扩展
    containerware
    ,是没有意义的。定义服务的关键是通过配置注入依赖项,而不是在运行时从容器中提取依赖项
  • 命名不一致-您的服务引用了
    Site\ProductBundle\Search\SphinxSearch
    ,但您的类实际上被命名为
    Dada\FilmsBundle\Search\DataSearch
  • 注入
    实体存储有两个选项:在此处尝试使用工厂,或使用

    工厂方法应该是这样的(假设正确的存储库是
    ProductRepository

    <service
        id="repository.product"
        class="Site\ProductBundle\Entity\ProductRepository"
        factory-service="doctrine.orm.entity_manager"
        factory-method="getRepository"
    >
        <argument>Site\ProductBundle\Entity\Product</argument>
    </service>
    
    <service id="SiteService.search" class="Site\ProductBundle\Search\SphinxSearch">
       <argument type="service" id="repository.product"/>
    </service>
    
    
    站点\产品包\实体\产品
    
    表达式语法如下所示

    <service id="SiteService.search" class="Site\ProductBundle\Search\SphinxSearch">
       <argument type="expression">service('doctrine.orm.entity_manager').getRepository('ProductBundle:Product')</argument>
    </service>
    
    
    服务('doctrine.orm.entity_manager').getRepository('ProductBundle:Product'))
    
    然后在你的服务课上

    <?php
    
    namespace Site\ProductBundle\Search;
    
    class SphinxSearch
    {
        /**
         * @var \Site\ProductBundle\Entity\ProductRepository
         */
        protected $repository;
    
        public function __construct(ProductRepository $repository) {
            $this->repository = $repository;
        }
    
        private function getResultsFromId($idlist) {
            // Do whatever with $this->repository
        }
    }
    

    看看这个它可以帮你这个帖子帮了你吗?看看这个它可以帮你这个帖子帮了你吗?看看这个它可以帮你这个帖子帮了你吗?看看这个它可以帮你这个帖子帮了你吗?在sf 3上-不允许使用“工厂服务”属性。在sf 3上-属性“工厂服务”在sf 3上不允许使用“ce”