2017-04-25 68 views
1

我開始瘋狂使Sylius產品圖像可翻譯。我需要一個ProductImage名稱和seo用於SEO目的。製作Sylius產品圖像可翻譯

我已經做的是:通過PARAM

  • 覆蓋ProductIamge:sylius.model.product_image.class
  • 新增TranslatableInterface和所需的功能,它
  • 新增ProductImageTranslation實體
  • 添加映射文件ProductImage.orm.yml & ProductImageTranslation.orm.yml
  • Extended config.yml

ProductImage.orm.yml

AppBundle\Entity\ProductImage: 
    type: entity 
    table: sylius_product_image 

ProductImageTranslation.orm.yml

AppBundle\Entity\ProductImageTranslation: 
    type: entity 
    table: app_product_image_translation 
    id: 
     id: 
      type: integer 
      generator: 
     strategy: AUTO 
    fields: 
     name: 
      type: string 
      nullable: true 
     slug: 
      type: string 
      nullable: true 
      unique: true 

config.yml

sylius_resource: 
    resources: 
     app.product_image: 
      classes: 
       model: AppBundle\Entity\ProductImage 
       form: AppBundle\Form\Type\ProductImageType 
      translation: 
       classes: 
        model: AppBundle\Entity\ProductImageTranslation 
        form: AppBundle\Form\Type\ProductImageTranslationType 

結果是以下錯誤:

An exception occurred while executing 'SELECT t1.type AS type_2, t1.path AS path_3, t1.id AS id_4, t1.owner_id AS owner_id_5 FROM sylius_product_image t1 WHERE t0.owner_id = ?' with params [22]: 

SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.owner_id' in 'where clause' 

在我看來,錯誤發生是因爲缺少連接的轉換表。

+0

您是否還生成並應用了遷移/和/或更新的模式? 'php bin/console doctrine:migration:diff'或'php bin/console doctrine:schema:update' – nakashu

+0

是的,我可以看到生成的轉換表:'app_product_image_translation' –

回答

0

您還需要覆蓋默認ProductImage在sylius_core(http://docs.sylius.org/en/latest/customization/model.html

config.yml:

sylius_resource: 
    resources: 
     app.product_image: 
      classes: 
       model: AppBundle\Entity\ProductImage 
      translation: 
       classes: 
        model: AppBundle\Entity\ProductImageTranslation 

sylius_core: 
    resources: 
     product_image: 
      classes: 
       model: AppBundle\Entity\ProductImage 

然後按照翻譯指南:http://docs.sylius.org/en/latest/cookbook/custom-translatable-model.html

如果您遵守所有的指引,你將能夠產生新的實體,但你會得到以下內容:

The association AppBundle\Entity\ProductImageTranslation#translatable refers to the inverse side field AppBundle\Entity\ProductImage#translations which does not exist. 

你可以把它通過編輯Sylius\Bundle\CoreBundle\DependencyInjection\Configuration 並增加了「翻譯」節點下的「product_image」這顯然不是做任何事情......

也許如果sylius核心成員都可以給我們一個線索工作。 ..

+1

Thx for your reply。沒有那個錯誤消失了。我將該翻譯添加到了它出現在管理中的表單中。 但是,新的錯誤上來,同時節省吧.. -.- _CRITICAL - 捕獲的PHP異常的Symfony \分量\調試\異常\ FatalThrowableError: 「對數組調用一個成員函數的setLocale()」 位於/ var/WWW /dev/vendor/sylius/sylius/src/Sylius/Bundle/ResourceBundle/Form/Type/ResourceTranslationsType.php line 63_ 我再次檢查了文檔,但仍找不到問題。 –