【EC-CUBE 4】変数の中身を確認する方法

EC-CUBE 4で変数の中身を確認する方法

本記事では、以下画像のように変数の中身をWebで表示させる方法について紹介します。
カスタマイズされる方には必須とも言え、頻繁に利用する機能かと思います。

product_detail.twigでdump関数を使い、Productの中身を表示させたときの画面
商品詳細ページに、変数「Product」の内容を表示させる

対象ページのTwigテンプレートに、変数を表示させるdump()関数を記述するだけでOK。(上記画像では、ProductControllerから渡された変数「Product」の中身を表示しています。)

ProductControllerでdump関数を使い、$Productの中身を表示させたときの画面
Controllerファイルで設定した変数の中身を表示させる

Twigファイルだけでなく、Controllerで設定した変数の中身を表示させることもできます。(上記画像では、ProductController内のdetail関数で定義した「$Product」の中身を表示しています。)

【動作環境】
EC CUBEのバージョン:4.1.2
サーバー:Xserver

目次

まずデバッグモードを設定する

変数の中身を表示させるには「デバッグモード」を設定しておく必要があります。
設定していないとエラーになるので、ファイルサーバーの「.env」ファイルを修正しておきましょう。

詳しい設定方法については以下記事を参考にしてください。

Twigテンプレート内の変数を表示する

Twigテンプレートに設定された変数を表示するには「dump()」関数を使います。
()内には表示させたい変数を記述します。

例)商品詳細ページの変数を表示

冒頭の画像のように、商品詳細ページにおいて商品情報が格納されている変数「Product」の中身を表示するには、detail.twigの{% block main %} 〜 {% endblock %}内に以下コードを記述します。

{{ dump(Product) }}

コードを記述する場所によって、表示される位置が変わります。
冒頭の画像では、{% block main %}のすぐ下に記述しています。

引数には好きな変数を指定でき(テンプレート内で設定されている変数に限る)、例えばタグ情報を取得したいなら以下のように記述します。

{{ dump(Product.Tags) }}
  • 対象のTwigテンプレートに存在しない変数を渡してしまうとエラーになります。
  • 前項の通り「dump()」はデバッグモードのときにしか使えません。
    本番モードではエラーになってしまうので、ご注意ください。

Controller内の変数を表示する

先程の処理では、Twigテンプレートに渡した時点(つまり、ControllerからTwigテンプレートに渡した時点)の変数を確認することはできますが、ControllerからTwigテンプレートに渡す前(つまり、Controller内で処理中)の変数については確認できません。

Controller内の変数を確認するには、変数を確認したいタイミングで「dump()」関数と「die()」もしくは「exit()」関数の2つを連続して記述します。

  • 「dump()」関数は引数に渡した変数の中身を表示します。(冒頭の画像のように)
  • 「die()」関数 および 「exit()」関数は、スクリプトを強制終了する関数です。
    • この関数以降のプログラムは処理されない、ということです。

例)商品詳細ページの変数を表示

「src/Eccube/Controller」下にある「ProductController.php」に、商品詳細画面を表示するための関数(detail)があります。この関数内で「dump($Product)」と「die()」または「exit()」を記述すると、これらのコードを記述した時点での$Productの中身を商品詳細ページにて確認できます。

dump($Product);
die();

冒頭の画像では、return処理の前に上記コードを記述しています。

このコードを書く場所を変えれば、Controllerで処理途中の変数も確認できるため、デバッグにはぜひ使いたい機能ですね。

  • 「die()」「exit()」のどちらも記述しないと、そのままControllerの処理が進んでしまい通常の商品ページが表示されます。(変数の中身は表示されません。)
  • Controllerファイルに上記コードを書く際は、誤って他のコードを消してしまったり不要な文字・数字を書いてしまったりしないよう注意しましょう。

まとめ

以上、EC-CUBEのデバッグで必須ともいえる関数「dump()」について紹介しました。

ページ管理のTwigテンプレートを見ればわかるとおり、EC-CUBEではデフォルトで多くの変数が使われており、初見だと何が何やらわからないという状態になりがちです。

「dump()」を使って変数を可視化できると、デバッグはもちろんシステムの理解にも繋がるので、ぜひ使ってみてください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次