【EC-CUBE4】ParamConverterを無効化して、代わりにArgumentValueResolverInterfaceを実装してみる

EC-CUBE4のProductController::detailでParamConverterアノテーションが設定されているのですが、これってカスタマイズしにくいなあと思っていました。

なので、これを無効化して代わりにArgumentValueResolverInterfaceで同様の機能を実装してみます。

ParamConverterアノテーションを無効化

以下の設定をapp/Customize/Resource/config/services.yamlに追記します。

auto_converterをfalseにすることでParamConverterアノテーションを無効化できます。

新しいArgumentValueResolverを追加

ArgumentValueResolverInterfaceを実装すると、Controllerに設定されている引数の値をカスタマイズできます。

今回は引数にProductエンティティが設定されていた場合のResolverを用意しています。

Productエンティティかどうかはsupportsメソッドで判定しています。

ValueResolverの優先度を設定することも可能です

プラグインとの競合を回避するため、上記で実装したProductValueResolverの優先度を設定することも可能です。

RequestAttributeValueResolverの優先度が100なので、Requestの値をなにかしたい場合は優先度を100以上に設定してください。

以上で完成です。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください