Mage注册表项“_singleton /”已经存在错误

时间:2014-03-24 11:40:19

标签: magento

我知道我看过很多帖子,但是我没有在下面的代码中找到错误: config.xml:

<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>
        ';
    }
}

该代码有错误吗?我看不到任何东西!

2 个答案:

答案 0 :(得分:23)

问题在于在config.xml中定义观察者函数。

        <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>

应替换为:

       <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”可以是任何唯一字符串。

答案 1 :(得分:-3)

includes/config.php路径中注释掉两个定义函数调用:

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