PHP Symfony 2,在服务中使用方法参数

PHP Symfony 2,在服务中使用方法参数,symfony,service,dependency-injection,Symfony,Service,Dependency Injection,我有一个控制器,它的方法是calculateMaterial$product,其中$product是一个条令实体 我试图构建一个调用此方法的服务,我调用了我的服务计算器 这是我的services.xml文件: http://symfony.com/schema/dic/services/services-1.0.xsd> <services> <service id='acv.calculator' class='Arto\AcvBundle\

我有一个控制器,它的方法是calculateMaterial$product,其中$product是一个条令实体

我试图构建一个调用此方法的服务,我调用了我的服务计算器

这是我的services.xml文件:

http://symfony.com/schema/dic/services/services-1.0.xsd>

<services>
    <service id='acv.calculator'
             class='Arto\AcvBundle\Calculator\Calculator'>
             <argument type="service" id="doctrine.orm.entity_manager"/>
             <call method="calculateMaterial">
                  <argument type="service" id="acv.product"></argument>
             </call>
    </service>
    <service id='acv.product'
             class='Arto\AcvBundle\Entity\Product'
             public='true'>
            <call method="getAssemblies"></call>
    </service>
</services>
一切正常,我在控制器的方法中调用我的服务,但当我执行calculateMaterial$product方法时,它现在在我的服务计算器中,我总是得到$product NULL


我不知道如何将我的控制器的方法中的产品提供给我的服务的方法。

我认为你不应该在服务中注入$product实体,但要准时使用它,在需要的地方注入acv.calculator,然后在需要时调用calculateMaterial


您好,谢谢您的回答,我可以插入产品id,然后将我的产品实体重新构建到服务中,但我不知道如何在我的服务中插入我的产品id参数。我想插入我的产品id以重新构建我的产品,我的服务将继续计算我将提供给它的产品。你有Skype聊天吗?你对服务的定义是错误的。服务是一个对象,您应该在控制器中的某个点调用它,在另一个服务中,…,它通过调用您的方法进行操作。一旦你得到你的服务,你可以通过$this->container->get'your.service'->calculate$product调用你的方法如果你在一个控制器中我有一个控制器,里面有很多方法可以对我的产品实体进行计算,我只想把这些方法从控制器外部化,所以我写了一个服务,不是吗?是的,但是在DIC中,您不需要定义对计算方法的调用。或者将您的实体声明为服务。您只需要声明计算器服务。然后调用服务和方法。请查看更多信息