2012-06-16 126 views
0

所以,我開始對一些Magento代碼進行破解。我試圖追蹤計算購物車頁面上的運費的代碼。我正在查看/your_theme/template/checkout/cart/中名爲shipping.phtml的文件。Magento:跟蹤和調試其PHP代碼

郵政編碼輸入框:

  <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的文件是計算這個速度的,但是我無法改變網站上顯示的代價,即使核心文件被修改了,所以我想知道我自己的確是計算運費的代碼。

+0

'[magento]/app/code /'目錄中的某些內容,但您想實現什麼目標?你想從我們這裏得到一個有用的答案,你對此非常模糊。 – sg3s

+0

安裝xdebug(在開發服務器上),將調試器指向它,將它設置爲在開始時中斷,並快速單擊「下一個」,直到找到壞男孩。 – Wrikken

回答

1

這不是計算出貨的代碼 - 它只是提交請求的表單。可能最簡單的方法就是在嗅探HTTP請求時(即通過瀏覽器的開發人員工具的網絡選項卡)提交表單,並查看請求的位置 - 然後找到在該URL處理請求的控制器。

如果您想知道該文件中$ this引用了哪個類,那麼最可靠的方法可能是從模板中回顯get_class($this)。但是,這可能不是找到你要找的東西的最直接的方法。

+0

如果最終得到一個類名,並且想知道如何繼續,請參閱'[magento]/app/code/core/Mage/Core/functions.php'中的自動加載函數,以獲取將類名轉換爲文件名的代碼。 – Brilliand