【问题标题】:Magento - Debug phtml file in NetbeansMagento - 在 Netbeans 中调试 phtml 文件
【发布时间】:2014-12-02 21:44:46
【问题描述】:

也许以前有人问过这个问题,但我在任何地方都找不到。我是 Magento/Netbeans 的新手。

在 Netbeans 中设置 xdebug 后,我可以通过在 index.php 中的一行停止来开始调试,例如,对于这一行:

Mage::run($mageRunCode, $mageRunType);

我可以在哪里检查 $mageRunCode 和 $mageRunType 的值。

但是,在 .phtml 文件中设置断点后,进程会在断点处运行而不停止。例如,在文件\default\template\catalog\product\list.phtml 中,我在(我想单步执行getPriceHtml() 函数)处设置了一个断点:

<?php echo $this->getPriceHtml($_product, true); ?>

我什至在函数中设置了一些断点

public function getPriceHtml($product, $displayMinimalPrice = false, $idSuffix = '')

在 Abstract.php 中,但它也没有停止。

那么,我需要怎么做才能让调试过程在使用 XDebug 的 Netbeans 中的任何断点处停止?

【问题讨论】:

  • 我开始使用 Step-Over 在 Magento 中进行调试。原来调试过程实际上在网页显示之前退出了函数:protected function _checkBaseUrl($request) {... exit;}。那么,无论是否使用 NetBeans,是否都无法在 Magento 中单步执行任何 .phtml 模板文件的代码?

标签: magento netbeans breakpoints xdebug php


【解决方案1】:

可以在 phtml 文件中的断点处停止,我一直这样做。
可能发生的情况是您放置断点的代码未执行。 list.phtml 文件同时管理网格和列表视图模式:也许您将断点放在网格部分并正在查看列表视图,反之亦然。或者您可能不在正确的模板中:请确保启用模板提示并检查文件的路径。
至于Mage_Catalog_Block_Product_Abstract::getPriceHtml() 可能被其他类覆盖了。

对于 list.phtml 文件(如果您确定它是正确的,cfr 模板提示),我的建议是在 1.7.0.2 版本的本机文件中的第一个 php 行放置一个断点第 35 行:

$_productCollection=$this->getLoadedProductCollection();

当你到达那里时,使用“Step Over (F8)”功能直到你到达你想要检查的那一行,即&lt;?php echo $this-&gt;getPriceHtml($_product, true) ?&gt;,然后你可以“Step Into” (F7)" 直接进入实际功能。

HTH

【讨论】:

  • OSDave,感谢您的回复!所以你可以在 Netbeans 中调试 Magento。
  • OSDave,感谢您的回复!所以你可以在 Netbeans 中调试 Magento。但是,它仍然对我不起作用。我在所有 list.phtml 文件中放置了一个断点,我可以在 Magento 项目中使用相同的 php 行找到这些文件:'$_productCollection=$this->getLoadedProductCollection();',然后刷新目录视图页面。内容已刷新,但已跳过断点。我不知道我在哪里没有正确设置 xdebug,因为我可以在 index.php 页面中开始调试。
  • @umage 您是否激活了模板提示以找出渲染的文件?
  • 经过多次尝试,我放弃了尝试使用NetBeans调试magento项目。相反,我安装了 phpStorm 8 并立即可以调试 magento php 代码,这表明这台计算机上的 xdebug 设置没有任何问题。问题是 Netbeans 和 xdebug 不能顺利协同工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 2014-04-28
  • 1970-01-01
相关资源
最近更新 更多