2014-03-24 62 views
13

我知道有很多帖子說我看見了,我沒有找到在波紋管代碼中的錯誤: config.xml文件:法師註冊表項「_singleton /」已經存在錯誤

<events> 
      <core_block_abstract_to_html_after> 
       <observers> 
         <type>singleton</type> 
         <class>WebDirect_CustomPrice_Model_Observer</class> 
         <method>convertPricespanToInput</method> 
       </observers> 
      </core_block_abstract_to_html_after> 
     </events> 

觀察類:

class WebDirect_CustomPrice_Model_Observer 
{ 
    const MODULE_NAME = 'WebDirect_CustomPrice'; 
    public function convertPricespanToInput($observer = NULL) 
    { 
     if (!$observer) { 
      return; 
     } 
     if ('product.info.simple' == $observer->getEvent()->getBlock()->getNameInLayout()) { 
      if (!Mage::getStoreConfig('advanced/modules_disable_output/'.self::MODULE_NAME)) { 
       $transport = $observer->getEvent()->getTransport(); 
       $block = new WebDirect_CustomPrice_Block_priceSpanToInput(); 
       $block->setPassingTransport($transport['html']); 
       $block->toHtml(); 
      } 
     } 
     return $this; 
    } 
} 

和一類產品視圖頁中添加自定義的javascript:

class WebDirect_CustomPrice_Block_priceSpanToInput extends Mage_Core_Block_Text { 
    //protected $_nameInLayout = 'selectify.qty_input_to_select'; 
    //protected $_alias = 'qty_input_to_select'; 
    public function setPassingTransport($transport) 
    { 
     $this->setData('text', $transport.$this->_generateQtyInputToSelectHtml()); 
    } 
    private function _generatepriceSpanToInputHtml() 
    { 
     $price = Mage::registry('current_product')->getPrice(); 
     $product_Id = Mage::registry('current_product')->getId(); 
     return ' 
      <script type="text/javascript"> 
      //<![CDATA[ 
      document.observe("dom:loaded", function() { 
       $("product-price-'.$product_Id.'").replace(\'<span class="price" id="product-price-'.$product_Id.'">&nbsp;<input type="text" id="CP_ID" class="input-text price" name="custom_price" style="width:auto;" value="'.$price.'" onchange="onChangeCP(this);"/></span><input type="hidden" id="custom_price_total" name="custom_price_total" value="'.$price.'">\'); 
      }); 
      //]]> 
      </script> 
     '; 
    } 
} 

是否在該代碼中有任何錯誤?我看不到任何東西!

+0

你有沒有安裝後清除緩存?今天我同樣的問題,但對我來說清除緩存工作。 – ParekhAbhishekN

+0

清除緩存是很多的解決方案之一,我的解決方案中所標示的答案:) – Souf

回答

22

的問題是在你的config.xml定義觀察器功能。

 <events> 
      <core_block_abstract_to_html_after> 
       <observers> 
        <some_unique_identifier> 
         <type>singleton</type> 
         <class>WebDirect_CustomPrice_Model_Observer</class> 
         <method>convertPricespanToInput</method> 
        </some_unique_identifier> 
       </observers> 
      </core_block_abstract_to_html_after> 
     </events> 

其中 「some_unique_identifier」 可以是任何唯一的字符串:

 <events> 
      <core_block_abstract_to_html_after> 
       <observers> 
         <type>singleton</type> 
         <class>WebDirect_CustomPrice_Model_Observer</class> 
         <method>convertPricespanToInput</method> 
       </observers> 
      </core_block_abstract_to_html_after> 
     </events> 

應改爲。

+0

奏效謝謝描述! – Souf

+3

在我來說,我也不得不改變「 COMPANY_MODULE /觀察員」到「 COMPANY_MODULE_Model_Observer」。使用Magento 1.9 – karantan

-3

註釋掉兩個定義函數調用includes/config.php路徑:

#define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src'); 
#define('COMPILER_COLLECT_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'stat');