デバッグ方法

fn_print_r()関数を使用したデバッグ

fn_print_r()関数を使用して、PHPコードをデバッグできます。この関数は、指定した変数に関する情報を表示します。

fn_print_die()関数を利用することもできます。変数に関する情報も表示されますが、プログラムは中断されます。

PHPコントローラー内で使用する方法

お客様→管理者のページで管理者に関する情報を表示しましょう。
このページのURLはhttp://example.com/admin.php?dispatch=profiles.manage&user_type=Aです。

URLのディスパッチ(dispatch)パラメータに従って、profiles.phpというコントローラーを探します。そのコントローラーはストアのapp/controllers/backendディレクトリにあります。

$mode == 'manage'で始まるセクションを探します。
次のコードを見つけましょう。

<?php
list($users, $search) = fn_get_users($_REQUEST, $auth, Registry::get('settings.Appearance.admin_elements_per_page'));

次の行にfn_print_r($users)を追加すると、変数$users(配列)の中身の情報を確認することができます。

Smartyテンプレート内で使用する方法

fn_print_r()関数を.tplファイルで使用することができますが、PHPとは構文が異なります。

{$an_array_or_a_variable|@fn_print_r}

[ お客様]→[管理者]ページのテンプレートを変更して、管理者に関する情報を表示しましょう。

manage.tplファイルを探します。
これはdesign/backend/templates/view/profilesディレクトリーにあります。
ファイルの最初に次のコードを追加します。

{$users|@fn_print_r}

PHPコントローラーにfn_print_r($users)を追加するのと同じ結果になります。

AJAXのデバッグ

開発モードとエラー通知を有効にして、 AJAXをデバッグします。

PHP、Smarty、およびSQLのクエリエラーとは異なり、AJAXでのエラーは、開発モードやエラー通知がオンであってもブラウザ上には表示されません。

(ブラウザ上に)エラーメッセージを表示するには、AJAXを無効にする必要があります。
ブラウザでバグのある要素のコードを調べてcm-ajaxマイクロフォーマット)を削除または変更します。たとえば、cm-ajax1にリネームします。

ショップフロントの商品ページの「カートに追加」ボタンが何らかの理由で機能しないと仮定します。コードインスペクタを使用すると、このボタンがフォームの一部であることがわかります。強調表示エリアのcm-ajaxcm-ajax1に変更します。

こうすることで、「カートに追加」ボタンをクリックすると、ファイルの名前とエラーが発生した行の番号を含むエラーページが表示されます。