2012-09-12 157 views
3

我想在我的模塊(app/code/local/Foo/Bar)中實現一個簡單的觀察者。 我的目標是在產品加載到前端時將產品名稱設置爲'[產品名稱]很酷'。magento事件觀察者(magento1.7)

這些都是我的文件: 應用程序/代碼/本地/美孚/酒吧的/ etc/config.xml中

<?xml version="1.0" encoding="UTF-8"?> 

<config> 
    <global> 
     <models> 
      <foo_bar>  
        <class>Foo_Bar_Model</class> 
      </foo_bar> 
     </models> 
    </global> 
    <frontend> 
     <events> 
      <catalog_product_load_after> 
       <observers> 
        <foo_bar> 
         <type>model</type> 
         <class>foo_bar/observer</class> 
         <method>catalogProductLoadAfter</method> 
        </foo_bar> 
       </observers> 
      </catalog_product_load_after> 
     </events> 
    </frontend> 
</config> 

應用程序/代碼/本地/美孚/酒吧/型號/ Observer.php

<?php 
class Foo_Bar_Model_Observer{ 

public function catalogProductLoadAfter(Varien_Event_Observer $observer) 

{ 
    $product = $observer ->getProduct(); 

    $product ->setName($product.getName().' '.'is cool'); 
} 
} 
?> 

,我也在應用的/ etc /模塊中配置的模塊/ Foo_Bar.xml

<?xml version="1.0" encoding="UTF-8"?> 
<config> 
    <modules> 
    <Foo_Bar> 
     <active>true</active> 
     <codePool>local</codePool> 
    </Foo_Bar> 
    </modules> 
</config> 

但它可以工作,有沒有人有任何建議?

+1

不應該'$ product.ge tName()'是'$ product-> getName()'? –

+0

非常感謝JürgenThelen!這花了我兩個小時,我仍然認爲像一個Java開發人員:)。再次感謝!! –

回答

2

你只需要爲模型模塊名稱:

<foo_bar> 
    <type>model</type> 
    <class>bar/observer</class> 
    <method>catalogProductLoadAfter</method> 
</foo_bar> 

你不需要指定foo_bar這樣

也有你的錯誤在你的PHP

$product ->setName($product.getName().' '.'is cool'); 

$product->setName($product->getName().' '.'is cool');