以下のメモは、まだECCUBE3のことをよくわかっていなかった時に書いたもの。とはいえ今でもまだ頭がよく整理できていない。
「フィールドグループに追加のフィールドを含んではなりません」と言われてしまう件について。
環境
- [EC-CUBE] EC-CUBE3.0.16
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 開発コミュニティ - フォーラム]
こういう罠もあるのか…