2017-04-25 5 views
1

私はSylius ProductImageを翻訳可能にするのに怒っています。私はSEOの目的のためにProductImageの名前とスラッグが必要です。私はすでにやったSyliusをProductImageに翻訳可能にする

は次のようになります。それにsylius.model.product_image.class

  • 追加TranslatableInterfaceと必要な機能
  • 追加ProductImageTranslationエンティティ
  • を追加しました:

    • オーバーライドPARAM経由ProductIamge ProductImage.orm.ymlのマッピングファイル& ProductImageTranslation.orm.yml
    • 拡張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' 
    

    ジョイント変換テーブルがないためにエラーが発生しているようです。

    ます。またsylius_coreにデフォルトのProductImageをオーバーライドする必要が
  • +0

    移行/更新スキーマを生成して適用しましたか? 'php bin/console doctrine:migration:diff'または' php bin/console doctrine:schema:update' – nakashu

    +0

    はい、私は結果の変換テーブルを見ることができます: 'app_product_image_translation' –

    答えて

    0

    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のコアメンバーは私たちに手掛かりを与えることができればあなたは多分...それはSylius\Bundle\CoreBundle\DependencyInjection\Configuration を編集して、明らかに行うためのものではありません「product_image」の下に「翻訳」ノードを追加することにより、作業

    を作ることができます。 ..

    +1

    あなたの返信はThxです。いいえ、間違いはありません。管理者に表示されるフォームに翻訳を追加しました。 しかし、それを保存しながら、新しいエラーが思い付いた.. -.- _CRITICAL - キャッチされないPHPの例外のSymfony \コンポーネント\デバッグ\例外の\ FatalThrowableError: "アレイ上)(メンバー、関数setLocaleにコール" では/ var/WWW /dev/vendor/sylius/sylius/src/Sylius/Bundle/ResourceBundle/Form/Type/ResourceTranslationsType.php line 63_ ドキュメントをもう一度チェックしましたが、問題が見つかりません。 –

    関連する問題