本文概述
如果你不了解或使用正确的工具, 则在Shopware上进行调试可能会令人头疼。如先前在使用Shopware Profiler正确地调试和分析Shopware教程中所提到的, 我们展示了如何使用前端中的有用工具栏安装Shyim Profiler来调试模板, 查询和网络性能。但是, 如何调试仅在白色屏幕上显示的错误呢?如果你没有在前端看到PHP抛出的异常, 则可能是你未正确配置config.php文件以在前端显示异常。
1.显示PHP异常并禁用模板缓存
与大多数框架一样, 你可以在单个文件中配置全局选项。在这种情况下, 对于Shopware, PHP设置是在项目中根文件夹的config.php文件中配置的。该文件基本上返回带有一些选项的简单数组。配置完全取决于你, 因此有关更多信息, 请阅读文档以获取有关此文件的更多信息。
当我们要调试时, 以下配置将显示有关Shopware应用程序前端和后端JS和PHP错误的信息:
注意
此配置仅对开发环境(本地)安全, 切勿用于生产环境。
<?php
return array(
// Here you should find the database config ...
// ../
// Warning:
// Only for Debug Purpose, do not use this configuration in production.
'front' => [
'throwExceptions' => true, 'showException' => true
], 'template' => [
'forceCompile' => true
], 'model' => [
'cacheProvider' => 'Array'
], 'cache' => [
'backend' => 'Black-Hole', 'backendOptions' => [], 'frontendOptions' => [
'write_control' => false
]
], "phpsettings" => [
'display_errors' => 1, 'error_reporting' => E_ALL
]
);
在使用新配置清除所有缓存之后, 现在你将能够看到购物软件可能抛出的详细消息和异常:
调试最重要的属性是phpsettings, 缓存和模板。例如, 将forceCompile设置为false可以防止缓存Smarty模板。通常, 在模板上进行每次更改后, 你都必须清除缓存, 但是如果将forceCompile设置为true, 则每次重新加载时都会编译模板。对于每个开发人员来说, 这应该是必不可少的选择。请记住, 它确实对加载时间有很大的影响, 因此切勿在生产中使用。
throwExceptions和showExceptions之间的区别在于如何处理异常。选项showException使Shopware错误处理程序保持启用状态, 捕获PHP异常并打印消息, 而不显示通用的”糟糕!发生错误!”。信息。相反, 选项throwExceptions跳过Shopware错误处理程序, 并输出纯PHP异常。了解这一点很重要, 因为Shopware错误处理程序需要捕获一些错误才能进行自我修复, 例如CSRF令牌无效。
2.调试Smarty模板
如果要调试smarty模板, 则可以使用smarty修饰符, 例如:
{somevariable|@var_export}
{somevariable|@var_dump}
{somevariable|@print_r}
此外, 你可以使用Smarty调试控制台转储分配给模板的所有变量。是的, 如果你在要调试的任何模板上使用debug块, 则聪明地不要侵入项目的HTML结构来调试变量:
{block name="frontend_index_logo"}
{* This will show the Smarty Debug PopUp*}
{debug}
<div class="shop--slogan">
<h2>Some HTML</h2>
</div>
{/block}
在任何块中添加此行将显示一个弹出窗口, 其中带有Smarty视图, 该视图在添加块的模板中显示一小部分已使用的变量。如前所述, 出于安全原因, 某些浏览器可能会阻止PopUp, 请不要忘记允许你正在调试的网站的浏览器中出现弹出窗口:
允许弹出窗口(如果被阻止)后, 重新加载页面, 浏览器的弹出窗口应显示:
如果你知道可以在Shopware中调试的其他配置或工具, 请在注释框中与社区共享。
编码愉快!
评论前必须登录!
注册