2015-11-06 50 views
0

工作機制如何在Sylius中動態生成服務,然後像get()方法中services.yml文件中配置的常規服務一樣可用。工作機制如何在Sylius中動態生成服務?

我說的這種情況:

擴展底座型號 所有Sylius車型住在Sylius \分量\某某\型號命名空間與接口一起。例如,對於Sylius稅收組件,它是TaxCategory和TaxRate。

我們假設您想要將「區域」字段添加到Sylius稅率。

首先,您需要創建自己的TaxRate類,它將擴展基礎模型。

namespace Acme\Bundle\ShopBundle\Entity;

use Sylius\Component\Addressing\Model\ZoneInterface; use Sylius\Component\Taxation\Model\TaxRate as BaseTaxRate;

class TaxRate extends BaseTaxRate { private $zone;

public function getZone() 
{ 
    return $this->zone; 
} 

public function setZone(ZoneInterface $zone) 
{ 
    $this->zone = $zone; 

    return $this; 
} 

}

最後,您配置類的應用程序/配置/ config.yml文件。

sylius_taxation: driver: doctrine/orm classes: tax_rate: model: Acme\ShopBundle\Entity\TaxRate # Your tax rate entity.

Sylius自動生成到像正常服務類的訪問。

  • 參數sylius.model.tax_rate.class包含Acme \ Bundle \ ShopBundle \ Entity \ TaxRate。
  • sylius.repository.tax_rate表示您的新類的Doctrine存儲庫。
  • sylius.manager.tax_rate表示您的新類的Doctrine對象管理器。 d- sylius.controller.tax_rate表示新類的控制器。

它是如何工作的?它是一個捆綁?這是非常好的解決方案。我想在Symfony2的自己的項目中實現這個機制。

+0

不僅如此,但資源包爲您提供了在ResourceController類CRUD funtionality開箱 – gvf

回答

0

如果您想在自己的項目中使用它,只需通過作曲家集成SyliusResourceBundle即可。現在,您可以使用給定的類在配置中定義資源。

sylius_resource: 
    resources: 
     app.entity_name: 
      driver: doctrine/orm 
      object_manager: default 
      templates: App:User 
      classes: 
       model: App\Entity\EntityName 
       interface: App\Entity\EntityNameInterface 

可用的服務現在app.model.entity_nameapp.repository.entity_nameapp.manager.entity_nameapp.controller.entity_name是。

http://docs.sylius.org/en/latest/bundles/SyliusResourceBundle/configuration.html