2016-01-19 63 views
0

在資源包,我已配置資源「charge.quote」:Sylius ResourceBundle:如何覆蓋表單服務?

sylius_resource: 
    resources: 
     charge.quote: 
      classes: 
       controller: ChargeBundle\Controller\QuoteController 
       model: ChargeBundle\Entity\Quote 
       repository: ChargeBundle\Repository\QuoteRepository 
       form: 
        default: ChargeBundle\Form\QuoteType 

我想知道我怎麼可以覆蓋形式的服務,如資源包charge.form.type.quote產生。目標是能夠從QuoteType訪問服務容器。

我想聲明的其他服務覆蓋由資源束所產生的服務,如:

<service id="charge.form.type.quote" class="%charge.form.type.quote.class%"> 
    <argument type="service" id="service_container" /> 
    <tag name="form.type" /> 
</service> 

但是,自定義表單成爲忽視:資源包生成一個通用的形式,從實體。

任何想法將服務容器傳遞給我的表單類?

謝謝!

+0

@ Put12co22mer2我不明白你的意思。 「charge.quote」是資源的id(更確切地說,是一個別名),而不是表單本身。 –

回答

2

同樣的問題,最近在這裏解決:https://github.com/Sylius/Sylius/issues/3843

在從問題取出簡短的回答:

你剛纔定義具有相同名稱的服務,所以app.form.type.book例如,給它是別名app_book。 Sylius將從現在開始使用它。 :)

sylius_resource: 
    resources: 
     zdg.registration: 
      templates: EGBundle:Backend/Registration 
      classes: 
       model: ZDG\EGBundle\Entity\Registration 

服務:

services: 
    zdg.eg.type.registration: 
     class: ZDG\EGBundle\Form\Type\RegistrationType 
     tags: 
      - { name: form.type, alias: zdg_registration } 
     arguments: [@doctrine, @sylius.context.locale] 

你的表單類型名稱必須與別名相匹配。添加到您的類型:

public function getName() 
{ 
    return 'zdg_registration'; 
} 
+0

謝謝!實際上,標籤上缺少「別名」屬性:

+0

我相信這個服務應該根據這個評論命名爲「zdg.form.type.registration」: https://github.com/Sylius/Sylius/issues/3843#issuecomment-170513903 – Jacob