ECCUBE 3.0系の話。
標準ではmypage/loginからログインするとトップページに遷移します。
それをマイページに変更したいという要望がありました。
これに対応するにはログイン処理のイベントを拾って云々…になるかと思いきや、意外にもtwigの改造だけで対処できることがわかりました。
Mypage/login.twig
{% if app.session.flashBag.has('eccube.login.target.path') %} {% for targetPath in app.session.flashBag.get('eccube.login.target.path') %} <input type="hidden" name="_target_path" value="{{ targetPath }}" /> {% endfor %} {% endif %}
上記のようになっている部分があります。
_target_pathというパラメータで遷移先を指定できるんですね。
ここでflashBagセッションに遷移先が入っていればそこを_target_pathに指定する処理が書かれていますが、mypage/loginからの一般的な操作だと特に指定がないためにデフォルト=トップページに飛んでいるようです。
そこでflashBagセッションに遷移先指定がない場合、_target_pathにマイページを指定するようにして対応しました。
{% if app.session.flashBag.has('eccube.login.target.path') %} {% for targetPath in app.session.flashBag.get('eccube.login.target.path') %} <input type="hidden" name="_target_path" value="{{ targetPath }}" /> {% endfor %} {% else %} <input type="hidden" name="_target_path" value="{{ url('mypage') }}" /> {% endif %}