我一直在使用PHP一段时间,但对Smarty来说却相当新 .
我正在使用Prestashop,我注意到Smarty似乎吃掉了所有PHP错误 - 当PHP代码出错时,.tpl文件只输出一个空白页面 . 我一直在尝试,但即使出现错误,我也无法让Smarty显示PHP代码输出 .
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实际显示该错误?
3 回答
要激活调试模式,请转到
config/config.inc.php
找到以下行并将
off
变为on
为第一行并设置为true为第二行这将显示PHP和SQL错误(这可能足以让您解析"blank page") .
还有blog post on prestashop site about p() and d() methods and how to track exceptions
要在早于1.5的Prestashop版本中激活模板调试,请转至config / smarty.config.inc.php
找到以下行并将其设置为true
刷新页面时,应呈现
themes/debug.tpl
.要在Prestashop 1.5中激活模板调试,您可以通过“管理”面板启用Smarty调试
并设置
Always open console
但控制台将为所有人打开(不适合现场网站:))或者设置
Open console with URL parameter (SMARTY_DEBUG)
并将?SMARTY_DEBUG
添加到URL的末尾以查看控制台希望这可以帮助 .
我已经看过@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”是否为真,然后它将在prestashop中显示各种错误
我测试了它,它工作正常 .
设置
$error_reporting
变量 .见http://www.smarty.net/docsv2/en/variable.error.reporting.tpl