【问题标题】:How to show PHP notices in HTML element attributes with Firefox by default?如何在默认情况下使用 Firefox 在 HTML 元素属性中显示 PHP 通知?
【发布时间】:2017-10-14 05:13:27
【问题描述】:

我的网站是用 PHP 实现的。它打印一些通知,但它们出现在 HTML 元素属性中。我为我的网站使用 Smarty 模板,并在元素属性中引用变量:

<input autocomplete="off" name="peter" id="peter" type="text" data-array-values="{$blaa->test|json_encode|escape}" placeholder="Peter" data-validators='["prefixedNotInArray","matchPattern"]' required data-pattern="[0-9A-Z]{'{'}2,8{'}'}" data-abide-validator="multipleValidate" value="{$peter->id|escape}" />

对象 $blaa 不存在。因此它导致一个通知:

<input autocomplete="off" name="peter" id="peter" type="text" data-array-values="<br />
<b>Notice</b>:  Undefined index: blaa in <b>/var/www/myprogram/smarty/libs/sysplugins/smarty_internal_templatebase.php(165) : eval()'d code</b> on line <b>217</b><br />
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>/var/www/myprogram/smarty/libs/sysplugins/smarty_internal_templatebase.php(165) : eval()'d code</b> on line <b>217</b><br />
<br />
<b>Notice</b>:  Trying to get property of non-object in <b>/var/www/myprogram/smarty/libs/sysplugins/smarty_internal_templatebase.php(165) : eval()'d code</b> on line <b>217</b><br />
null" placeholder="Peter" data-validators='["prefixedNotInArray","matchPattern"]' required data-pattern="[0-9A-Z]{2,8}" data-abide-validator="multipleValidate" value="My ID" />

整个元素是表单元素的字段集的一部分,被多个 div 元素包围。

Firefox 53.0.2 不会自动显示它们。我只是通过使用 Ctrl+U 查看原始 HTML 网站才找到它们的。

我必须使用开发者工具或插件来解析网站的通知吗?

【问题讨论】:

  • 这是正常行为,firefox 会呈现您的 HTML 输入,并且当您将中断的对象存储在浏览器不会在视图中呈现 data-array-values 的属性中时,您将看不到屏幕上的错误,而不是to test-mental only 将您的对象存储在value 属性中,您会发现它;
  • 您可以打开错误日志并查看所有发生的错误和通知。
  • 好吧,对象不应该是值,我的问题是如何使用 Firefox 轻松调试网站,以便它能够识别此类通知。
  • 我添加了输出。

标签: php html firefox


【解决方案1】:

正如 hassan 在 cmets 中提到的,这是正常行为,消息正在正确输出,只是没有显示为 data-array-values 未在正常浏览器视图中呈现。它是一个 HTML 属性,这就是为什么只有在浏览源代码时才能看到它的原因。

例如,如果您尝试将{$blaa-&gt;test|json_encode|escape} 放在页面中&lt;p&gt; 标记的中间,您应该会在浏览器窗口中看到呈现的通知。

如有疑问,请在呈现页面后查阅您的 php 错误日志,或尝试事先在页面的可见 HTML 部分中打印出变量。

【讨论】:

  • 好吧,我会检查“/var/log/apache2/error.log”,但如果有一些可视化工具,集成在 Firefox 中,可以使用它会容易得多有一些简单的选择。
  • 我理解这个问题,但据我所知,没有开发工具可以拦截页面中的这些字符串。因为它们可以以各种方式呈现(例如,格式与 x-debug 完全不同)。 HTML 输出有助于调试,但错误日志会跟踪所有内容,包括浏览器窗口中可能输出或不输出的内容
猜你喜欢
  • 2019-08-14
  • 2014-03-28
  • 2014-10-11
  • 2013-01-31
  • 1970-01-01
  • 2013-12-10
  • 2012-06-13
  • 1970-01-01
相关资源
最近更新 更多