2015-11-06 51 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