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