7

私はしばらくの間PHPを使用してきましたが、Smartyはかなり新しいものです。

Prestashopを使用していますが、SmartyがすべてのPHPエラーを使い果たしているように見えることに気付きました。PHPコードにエラーがあると、.tplファイルは空白のページを出力するだけです。私は試してきましたが、エラーが発生した場合でも、PHPコードが出力するものをSmartyに表示させることができません。

PHPエラー報告は、エラーを表示するように設定されています。

したがって、たとえば、これがexample.phpファイルであるとしましょう。

<?php
//included classes etc go here, irrelevant for this issue

error_reporting(E_ALL ^ E_NOTICE);

echo obvious wrong syntax"
?>

このファイルは、出力をテンプレートブロックに収めるexample.tplに接続されています。

明らかに、エラーをスローするはずです。Smartyに実際にそのエラーを表示させるにはどうすればよいですか?

4

3 に答える 3

14

デバッグモードをアクティブにするには、に移動しますconfig/config.inc.php

次の行を見つけてoffon最初の行を変更し、2番目の行をtrueに設定します

/* Debug only */
@ini_set('display_errors', 'on');
define('_PS_DEBUG_SQL_', true);

これにより、PHPおよびSQLエラーが表示されます(「空白ページ」を解決するには、おそらくこれで十分です)。

prestashopサイトには、p()メソッドとd()メソッド、および例外を追跡する方法についてのブログ投稿もあります。

1.5より古いバージョンのPrestashopでテンプレートデバッグをアクティブ化するには、config/smarty.config.inc.phpにアクセスします。

次の行を見つけてtrueに設定します

$smarty->debugging = true;

ページを更新すると、themes/debug.tplがレンダリングされます。

Prestashop 1.5以降でテンプレートのデバッグをアクティブ化するには、管理パネルからSmartyのデバッグを有効にします。

設定>パフォーマンス>Smarty

設定しますAlways open consoleが、コンソールはすべての人に開かれます(ライブサイトには適していません:)

または、URLを設定して末尾にOpen console with URL parameter (SMARTY_DEBUG)追加?SMARTY_DEBUGすると、コンソールが表示されます

お役に立てれば。

于 2012-11-28T22:20:38.073 に答える
2

@Sergei Gukの答えとコース外を見たことがありますが、それはかなり良い答えです。ただし、prestashopはバージョン1.6をリリースしました。

したがって、prestashop v 1.6.0.6のすべてのエラーを表示したい場合は、config/defines.inc.phpにアクセスする必要があります。

に置き換えdefine('_PS_MODE_DEV_', false);ますdefine('_PS_MODE_DEV_', true);

実際に行うことは定数を設定し、次の行で「_PS_MODE_DEV_」がtrueであるかどうかをチェックし、prestashopですべての種類のエラーを表示します

if (_PS_MODE_DEV_)
{
  @ini_set('display_errors', 'on');
  @error_reporting(E_ALL | E_STRICT);
  define('_PS_DEBUG_SQL_', true);
}
else
{
  @ini_set('display_errors', 'off');
  define('_PS_DEBUG_SQL_', false);
}

私はそれをテストしました、そしてそれはうまく働きます。

于 2014-06-21T13:04:32.667 に答える
0

変数を設定し$error_reportingます。

http://www.smarty.net/docsv2/en/variable.error.reporting.tplを参照してください

于 2012-11-28T13:42:01.500 に答える