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以上に設定してください。
以上で完成です。