はじめに
タイトルの通りEC-CUBE4のコアコードをカスタマイズしてtwigで扱えるグローバル変数を追加します。
アップデートが単純に出来なくなるため、あまり褒められた方法ではないですが、他の方法が調べても出てこなかったためここに残しておきます。
このページを参考にする際は十分注意して下さい。
もっと良い方法があるならば教えていただけると嬉しいです。
方法
src/Eccube/EventListener/TwigInitializeListener.php
を編集します。
例えばセッションから取ってきた値をグローバル変数に追加したい場合は以下のように追記します。
元からあるコードについてはほぼ省略しています。
TwigInitializeListener.php
private $session;
# 略
public function __construct(
# 略
SessionInterface $session
) {
# 略
$this->session = $session;
}
public function setFrontVariables(GetResponseEvent $event){
# 略
$this->twig->addGlobal('Hoge', $this->session->get('hoge')); #twig にグローバル変数を追加
}
これだけでtwigで{{Hoge}}
のようにすることが出来るようになります。
なお TwigInitializeListener.php
の __construct
を編集した場合は prod 環境だと
bin/console cache:clear --nor-warmup
を実行しないとエラーが出るようなので注意して下さい。