【发布时间】:2017-06-28 12:47:51
【问题描述】:
我有一个 Symfony 项目,我想将实体存储库注入到服务中。服务定义为 XML 格式。
<service id="vendorname_shop.checkout_data_manager" class="Vendorname\ShopBundle\Checkout\CheckoutDataManager">
<argument type="service" id="security.token_storage" />
<argument type="service" id="session" />
<argument type="service" id="vendorname_shop.repository.pickup_point" />
<argument type="service" id="vendorname_shop.repository.order_payment_method" />
<argument type="service" id="vendorname_shop.repository.billing_address" />
</service>
我想让vendorname_shop.repository.billing_address服务成为一个简单的实体存储库(不是我写的自定义类,而是
EntityManager->getRepository(Vendorname\ShopBundle\Entity\BillingAddress::class)
方法调用),所以我在 xml 中使用了工厂语法,但是当 Symfony 尝试评估参数时,我不断收到错误消息:
<service id="vendorname_shop.repository.billing_address" class="Doctrine\ORM\EntityRepository">
<factory service="doctrine.orm.entity_manager" method="getRepository" />
<argument type="expression">Vendorname\ShopBundle\Entity\BillingAddress::class</argument>
</service>
上面的代码给了我Unexpected character "\" around position 11.
【问题讨论】:
-
首先,删除 ::class 部分,因为您已经给出了一个完全限定的类名。这只是一个猜测(我通常使用 yaml),但尝试将你的反斜杠加倍。供应商名称\\ShopBundle 等
-
你说得对,我不需要 ::class,只需要将参数类型也更改为字符串,就可以了!谢谢!
标签: symfony