Because We Love Happy Coding

フリーライターからエンジニア × 講師。発信力だけあり余ってる感じ

ECCUBE3「フィールドグループに追加のフィールドを含んではなりません」

今日もまたコーディング。だって僕らはHappy Codingが大好きだから。

以下のメモは、まだECCUBE3のことをよくわかっていなかった時に書いたもの。とはいえ今でもまだ頭がよく整理できていない。

「フィールドグループに追加のフィールドを含んではなりません」と言われてしまう件について。

環境

property_path

FormでEntityにないフィールドを使用する場合 ~ Symfony2.GrAFR

"property_path" => false,  

ECCUBEではなぜかうまくいかず。

InvalidArgumentException in PropertyPath.php line 82:
The property path constructor needs a string or an instance of "Symfony\Component\PropertyAccess\PropertyPath". Got: "boolean"

叱られた。

公式にあった

Form Extensionで追加しておかないといけない。

プラグインによるフォームの追加、変更 | EC-CUBE 開発ドキュメント

mapped

でも親側でbindされたくないので 'mapped' => false にしておいてあげましょう。 [[Done]EC-CUBE3のプラグインを2日でつくる - 1日目 - Qiita](https://qiita.com/shinichi-takahashi/items/9cd209d9f3a5fd1d1869)

ServiceProviderの書き方が公式サイトと少し違うみたい。$function($types) use ($app)function($extensions)になってる。

  Form/Extension
         $app['form.type.extensions'] = $app->share($app->extend('form.type.extensions', function ($extensions) {
             $extensions[] = new \Plugin\CategoryContent\Form\Extension\CategoryContentExtension();
              return $extensions;
         }));

[Done]EC-CUBE3のプラグインを2日でつくる - 1日目 - Qiita

とはいえあまり変化なし。

FormEventを使った拡張

調べていたらまた違ったやり方が出てきた……

EC-CUBE3のプラグインについて - Qiita
フォームイベントの実行タイミング - Qiita

どうもどのやり方が自分のやりたいことに適用されるのか、判断しづらい。

doctrineのyml

app/Resource/doctrineの中にあるymlにallow_extra_fieldの項目があるので、ここをいじらないといけないのかも。

罠?

ご質問されている件についてですが 現状のEC-CUBEの仕様では Admin/OrderDetailType の拡張はプラグインでは行えません。 [EC-CUBE 開発コミュニティ - フォーラム]

こういう罠もあるのか…