Pim-community-dev: ハードコードされたフォーム タイプのため、Akeneo 3 でカテゴリ エンティティをオーバーライドできません

作成日 2019年04月03日  ·  4コメント  ·  ソース: akeneo/pim-community-dev

こんにちは、

Akeneo CE 3.0.10を使用して、Categoryエンティティをオーバーライドして新しいプロパティを追加しようとしていますが、問題が発生します。

常に最新であるとは限らないことを知っているので、多かれ少なかれ公式ドキュメントに従っています。

Categoryクラスをオーバーライドしましたが、それは問題ありませんが、Categoryフォームをオーバーライドすることはできません。
パラメータpim_enrich.form.type.category.classがもう存在しないことに気付いたので、これは論理です。 使用されているフォームタイプ( Akeneo\Pim\Enrichment\Bundle\Form\Type\CategoryTypeがハードコードされています:-1:この2つのYAMLファイルに:

  • Akeneo/Pim/Enrichment/Bundle/Resources/config/form_types.yml
  • Akeneo/Pim/Enrichment/Bundle/Resources/config/controllers.yml

...一方、Akeneo 2では問題ありませんでした!

カテゴリエンティティの拡張に関する別の問題があります: #9833、これがリンクされているかどうかわかりません。

これをすぐに修正していただけませんか?

Rgds、
ペリーヌ

bug documentation

最も参考になるコメント

こんにちは@ peleq-笑顔、
2.3.x から 3.0.x にアップグレードするときに、カスタマイズされたカテゴリ エンティティでも同じ問題が発生しました。
現在のところ、公式ドキュメントhttps://docs.akeneo.com/3.0/manipulate_pim_data/category/add_new_properties_to_a_category.html#define-the-category-formのガイドに従っては機能しません。 簡単な修正として、パラメータ化された FormType クラスを使用して、自分のバンドル内 (たとえば Resources/config/controllers.yml 内) のコントローラーのサービス定義をオーバーライドすることにしました (ドキュメントに従って、オーバーライドが設定されている可能性があります)。

    pim_enrich.controller.category_tree.product:
        class: 'Akeneo\Pim\Enrichment\Bundle\Controller\Ui\CategoryTreeController'
        arguments:
            - '<strong i="9">@event_dispatcher</strong>'
            - '@pim_user.context.user'
            - '@pim_catalog.saver.category'
            - '@pim_catalog.remover.category'
            - '@pim_catalog.factory.category'
            - '@pim_catalog.repository.category'
            - '@oro_security.security_facade'
            - { related_entity: product, form_type: '%pim_enrich.form.type.category.class%', acl: pim_enrich_product, route: pim_enrich }
            - '@pimee_security.repository.category_access'
            - '@security.token_storage'
        calls:
            - [ setContainer, [ '<strong i="10">@service_container</strong>' ] ]

ymlファイルがYour \ Custom \ Bundle \ DependencyInjection \ Extension.phpに正しくロードされていることを確認してください。

    public function load(array $configs, ContainerBuilder $container)
    {
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load("controllers.yml");
        [load your other configs...]
    }

全てのコメント4件

こんにちは、

先に進むために、クラスのパラメータを使用して両方のファイルを更新しました (ベンダーでは、私をそんなに速く判断しないでください...これは実際のプロジェクトではなくトレーニングのためのものです^^)、それをオーバーライドできるようにしますそしてそれは動作します。

しかし、その後、カテゴリの新しい「画像」プロパティに MediaType フォーム要素を追加できませんでしたが、これは別の問題です。 可能だと思いますが、Akeneoに「古い小枝の前」システムを備えたMediaTypeプロパティの他のサンプルがないため、その方法がわかりません。

BR、
ペリーヌ

こんにちは@ peleq-笑顔、
この問題をどのように解決しましたか? 私は symfony が初めてです

こんにちは@ peleq-笑顔、
2.3.x から 3.0.x にアップグレードするときに、カスタマイズされたカテゴリ エンティティでも同じ問題が発生しました。
現在のところ、公式ドキュメントhttps://docs.akeneo.com/3.0/manipulate_pim_data/category/add_new_properties_to_a_category.html#define-the-category-formのガイドに従っては機能しません。 簡単な修正として、パラメータ化された FormType クラスを使用して、自分のバンドル内 (たとえば Resources/config/controllers.yml 内) のコントローラーのサービス定義をオーバーライドすることにしました (ドキュメントに従って、オーバーライドが設定されている可能性があります)。

    pim_enrich.controller.category_tree.product:
        class: 'Akeneo\Pim\Enrichment\Bundle\Controller\Ui\CategoryTreeController'
        arguments:
            - '<strong i="9">@event_dispatcher</strong>'
            - '@pim_user.context.user'
            - '@pim_catalog.saver.category'
            - '@pim_catalog.remover.category'
            - '@pim_catalog.factory.category'
            - '@pim_catalog.repository.category'
            - '@oro_security.security_facade'
            - { related_entity: product, form_type: '%pim_enrich.form.type.category.class%', acl: pim_enrich_product, route: pim_enrich }
            - '@pimee_security.repository.category_access'
            - '@security.token_storage'
        calls:
            - [ setContainer, [ '<strong i="10">@service_container</strong>' ] ]

ymlファイルがYour \ Custom \ Bundle \ DependencyInjection \ Extension.phpに正しくロードされていることを確認してください。

    public function load(array $configs, ContainerBuilder $container)
    {
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load("controllers.yml");
        [load your other configs...]
    }

こんにちは@ peleq-笑顔!

ドキュメントの新しい修正をリリースします。 「カテゴリに新しいプロパティを追加する方法」ページの修正が含まれています。

https://docs.akeneo.com/3.0/manipulate_pim_data/category/add_new_properties_to_a_category.html

新しいバージョンを表示するには、ブラウザのキャッシュをクリーンアップしてください。

よろしく、

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

pardahlman picture pardahlman  ·  4コメント

grabelle picture grabelle  ·  3コメント

lpxavi picture lpxavi  ·  4コメント

wakqasahmed picture wakqasahmed  ·  4コメント

a2xchip picture a2xchip  ·  5コメント