Magento:跟踪和调试其PHP代码


Magento: tracking and debugging its PHP code

所以,我开始破解一些Magento代码。我正在尝试在购物车页面上跟踪计算运费的代码。我正在查看一个名为 shipping.phtml in /your_theme/template/checkout/cart/ 的文件。

邮政编码输入框:

            <li>
                <label for="postcode"<?php if ($this->isZipCodeRequired()) echo ' class="required"' ?>><?php if ($this->isZipCodeRequired()) echo '<em>*</em>' ?><?php echo $this->__('Zip/Postal Code') ?></label>
                <input class="input-text validate-postcode<?php if ($this->isZipCodeRequired()):?> required-entry<?php endif;?>" type="text" id="postcode" name="estimate_postcode" value="<?php echo $this->htmlEscape($this->getEstimatePostcode()) ?>" />
            </li>

计算运费按钮:

        <div class="buttons-set">
            <button type="button" onclick="coShippingMethodForm.submit()" class="button"><span><span><?php echo $this->__('Get a Quote') ?></span></span></button>
        </div>

Javascript:

<script type="text/javascript">
//<![CDATA[
    var coShippingMethodForm = new VarienForm('shipping-zip-form');
    var countriesWithOptionalZip = <?php echo $this->helper('directory')->getCountriesWithOptionalZip(true) ?>;
    coShippingMethodForm.submit = function () {
        var country = $F('country');
        var optionalZip = false;
        for (i=0; i < countriesWithOptionalZip.length; i++) {
            if (countriesWithOptionalZip[i] == country) {
                optionalZip = true;
            }
        }
        if (optionalZip) {
            $('postcode').removeClassName('required-entry');
        }
        else {
            $('postcode').addClassName('required-entry');
        }
        return VarienForm.prototype.submit.bind(coShippingMethodForm)();
    }
//]]>
</script>

现在,我不知道它从这里走向何方。有人可以给我一些提示,说明这将从这里开始吗?

编辑:

应该补充一点,我正在寻找接收物品重量并计算 USPS 运费的代码。我读过一个名为 Usps.php 的文件是计算此费率的方法,但即使修改了核心文件,我也无法更改成本在网站上的显示方式,所以我想自己找出这确实是计算运费的代码。

这不是计算运费的代码 - 它只是提交请求的表单。 从那里开始的最简单方法可能是在嗅探HTTP请求时提交表单(即通过浏览器开发人员工具的网络选项卡),并查看请求的去向 - 然后找到在该URL上处理请求的控制器。

如果您想知道该文件中的$this引用了哪个类,那么最可靠的方法可能是从模板中回显get_class($this)。 但是,这可能不是找到所需内容的最直接方法。