2016-11-14 51 views
0

我正在尝试将翻译添加到Sylius的产品变体模型中,但在配置资源时遇到了一些麻烦。如何将翻译类/模型添加到现有的Sylius模型?

当定制机型处理很容易添加翻译类,只需创建与正确的接口所需的类,然后包括他们的资源配置文件中,象下面这样:

# resources.yml 
app.orientation: 
      driver: doctrine/orm 
      classes: 
       model: AppBundle\Entity\Orientation\Orientation 
      translation: 
       classes: 
        model: AppBundle\Entity\Orientation\OrientationTranslation 

我已经添加对产品变体进行必要的类别,并自定义产品变体以使其可翻译。最后一步是激活翻译类(本例中只有模型)。问题是,当我尝试将模型添加到我的config.yml我得到以下错误:

Unrecognized option "translation" under "sylius_product.resources.product_variant"

那么我怎么才能使产品变型模型的翻译?

配置参考:

# config.yml 
sylius_product: 
    resources: 
     product_variant: 
      classes: 
       factory: AppBundle\Factory\Product\ProductVariantFactory 
       model: AppBundle\Entity\Product\ProductVariant 
       form: 
        default: AppBundle\Form\Type\Product\ProductVariantType 
      translation: 
       classes: 
        model: AppBundle\Entity\Product\ProductVariantTranslation 

回答

0

有一个在vendor/sylius/sylius/src/Sylius/Bundle/ProductBundle/DependencyInjection/Configuration.php文件中没有 “tranlation” 条目。 那你为什么得到那个错误。

我猜你只需要在sylius_resource部分

sylius_resource: 
     app.product: 
      translation: 
       classes: 
        model: AppBundle\Entity\ProductTranslation 
+0

不幸的是,因为您必须配置类节点,所以不起作用。异常消息: '必须配置路径“sylius_resource.resources.app.product_variant”中的子节点“类”.' – Oggy

+1

如何将其添加并指向Sylius默认值? – ylastapis

0

基于@ylastapis意见,我想出了以下解决方案来定义您的翻译类:

sylius.product_variant: 
      classes: 
       factory: AppBundle\Factory\Product\ProductVariantFactory 
       interface: Sylius\Component\Product\Model\ProductVariantInterface 
       model: AppBundle\Entity\Product\ProductVariant 
       repository: AppBundle\Repository\ProductVariantRepository 
       form: Sylius\Bundle\ProductBundle\Form\Type\ProductVariantType 
      translation: 
       classes: 
        model: AppBundle\Entity\Product\ProductVariantTranslation 

这是我在进入我的resources.yml文件以及其他自定义资源。该解决方案的一个明显缺点是它与ProductVariant紧密结合。因为我必须引用所有类型的不使用资源包提供的默认类的类。