Вопрос

Вы понимаете, почему мой наблюдатель не стреляет?

config.xml:

  <?xml version="1.0" encoding="UTF-8"?>
<config>    
    <modules>
        <Caitlinhavener_Dynamicprice>
            <version>0.1.0</version>
        </Caitlinhavener_Dynamicprice>
    </modules>
    <global>
        <models>
            <chdispatcher>
                <class>Caitlinhavener_Dynamicprice_Model</class>
            </chdispatcher>
        </models>

        <frontend>
            <events>
                <checkout_cart_product_add_after>
                    <observers>
                        <modify_to_custom_price>
                            <class>Caitlinhavener_Dynamicprice_Model_Observer</class>
                            <method>modifyPrice</method>
                        </modify_to_custom_price>
                    </observers>
                </checkout_cart_product_add_after>
            </events>
        </frontend>
    </global>
</config>

Xersver.php:

    <?php
Mage::log('Im here')
or exit("unable to log");
class Caitlinhavener_Dynamicprice_Model_Observer
{
    public function modifyPrice(Varien_Event_Observer $obs)
    {
        // Get the quote item
        $item = $obs->getQuoteItem();
        Mage::log('Get Quote Item '. var_dump($_item->debug());

        // Ensure we have the parent item, if it has one
        $item = ( $item->getParentItem() ? $item->getParentItem() : $item );
        Mage::log('Get parent item ' . var_dump($_item->debug());

        // Load the custom price
        //$price = "your custom price logic";
        $price = Mage::registry('dynamic_tier_price');
        Mage::log('Price is ' . $price);

        // Set the custom price
        $item->setCustomPrice($price);
        $item->setOriginalCustomPrice($price);
        // Enable super mode on the product.
        $item->getProduct()->setIsSuperMode(true);
        Mage::log('Item after super mode ' . var_dump($_item->debug());
    }



}
?>

У @airhorse и @philwinkle были правильные ответы. Я должен был сделать все эти вещи, чтобы это работало.

Это было полезно?

Решение

Несколько вещей:

Модель определяется как:

<class>Caitlinhavener_Dynamicprice_Model_Observer</class>

Который ищет файл класса в структуре папок Caitlinhavener/Dynamicprice/Model/Observer/Observer.php.

Измените эту линию на:

<class>Caitlinhavener_Dynamicprice_Model</class>

Аналогичным образом, у вас есть проблема в модели/методе в вашем прослушивателе вашего события - изменение на:

<class>chdispatcher/observer</class>

Редактировать:

Фронт не должен быть вложенным внутри <global>:

<global>
    <models>
        <chdispatcher>
            <class>Caitlinhavener_Dynamicprice_Model</class>
        </chdispatcher>
    </models>
</global>


<frontend>
    <events>
        <checkout_cart_product_add_after>
            <observers>
                <modify_to_custom_price>
                    <class>chdispatcher/observer</class>
                    <method>modifyPrice</method>
                </modify_to_custom_price>
            </observers>
        </checkout_cart_product_add_after>
    </events>
</frontend>

Другие советы

Вам нужно восстановить свои модели и вытащить тег из The Frontend. Смотри ниже.

<config>    
   <modules>
       <Caitlinhavener_Dynamicprice>
           <version>0.1.0</version>
        </Caitlinhavener_Dynamicprice>
   </modules>
   <global>
      <models>
           <dispatcher>
               <class>Caitlinhavener_Dynamicprice_Model</class>
           </dispatcher>
       </models>
       <events>
            <checkout_cart_product_add_after>
                <observers>
                    <modify_to_custom_price>
                        <class>caitlinhavener_dynamicprice/observer</class>
                        <method>modifyPrice</method>
                    </modify_to_custom_price>
                </observers>
            </checkout_cart_product_add_after>
       </events>
    </global>
</config>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top