Question

Can you see why my observer is not firing?

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>

Observer.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());
    }



}
?>

Both @airhorse and @philwinkle had the correct answers. I had to do all of these things for it to work.

Was it helpful?

Solution

A few things:

The model is defined as:

<class>Caitlinhavener_Dynamicprice_Model_Observer</class>

Which is looking for the class file in the folder structure Caitlinhavener/Dynamicprice/Model/Observer/Observer.php.

Change this line to:

<class>Caitlinhavener_Dynamicprice_Model</class>

Likewise, you have an issue in the model/method in your event listener - change to:

<class>chdispatcher/observer</class>

Edit:

Frontend should not be nested inside of <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>

OTHER TIPS

You need to redeclare your models and take your events tag out of the frontend tag. See below.

<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>
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top