本文概述
- 1.显示PHP异常并禁用模板缓存
- 2.调试Smarty模板
1.显示PHP异常并禁用模板缓存 与大多数框架一样, 你可以在单个文件中配置全局选项。在这种情况下, 对于Shopware, PHP设置是在项目中根文件夹的config.php文件中配置的。该文件基本上返回带有一些选项的简单数组。配置完全取决于你, 因此有关更多信息, 请阅读文档以获取有关此文件的更多信息。
当我们要调试时, 以下配置将显示有关Shopware应用程序前端和后端JS和PHP错误的信息:
注意 此配置仅对开发环境(本地)安全, 切勿用于生产环境。
<
?phpreturn 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中调试的其他配置或工具, 请在注释框中与社区共享。
【如何在Shopware中配置调试环境】编码愉快!
推荐阅读
- 如何在NetBeans中自动为PHP类创建getter和setter
- 如何在Symfony中使用FOSUserBundle在自定义控制器中注册用户
- 如何解决symfony 3错误给出类型为”字符串”,”yourBundle/Form/xformType”的预期参数
- 未设置Symfony 2默认时区会在生产环境中导致致命错误
- 如何在Symfony 3表单内使用Twig检索EntityType字段的每个实体实例
- 如何使用Symfony 2和3返回xml或json响应
- 如何在php或symfony中使用jQuery ajax上传文件
- 如何使用请求ip免费检测php或javascript中访客的国家
- 如何使用tcpdf在Symfony 2和3中使用php创建pdf文件