如何在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会像普通服务一样自动生成对该类的访问权限。
如何运作?它是捆绑?这是非常好的解决方案。我想在Symfony2中实现我自己项目中的机制。
答案 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_name
,app.repository.entity_name
,app.manager.entity_name
和app.controller.entity_name
。
http://docs.sylius.org/en/latest/bundles/SyliusResourceBundle/configuration.html