工作机制如何在Sylius中动态生成服务?

时间:2015-11-06 11:52:19

标签: symfony sylius

如何在Sylius中动态生成服务的工作机制,然后可以像方法get()中的services.yml文件中配置的普通服务一样使用。

我说的是这种情况:

扩展基础模型 所有Sylius模型与接口一起存在于Sylius \ Component \ Xyz \ Model命名空间中。例如,对于Sylius Taxation Component,它是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;
}

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

最后,在app / config / config.yml文件中配置您的类。

}

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中实现我自己项目中的机制。

1 个答案:

答案 0 :(得分:0)

如果您想在自己的项目中使用它,只需通过composer集成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