【问题标题】:magento event observer (magento1.7)magento 事件观察者 (magento1.7)
【发布时间】:2012-09-12 15:01:17
【问题描述】:

我正在尝试在我的模块 (app/code/local/Foo/Bar) 中实现一个简单的观察者。 我的目标是在前端加载产品时将产品名称设置为“[产品名称] 很酷”。

这些是我的文件: app/code/local/Foo/Bar/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>

app/code/local/Foo/Bar/Model/Observer.php

<?php 
class Foo_Bar_Model_Observer{

public function catalogProductLoadAfter(Varien_Event_Observer $observer)

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

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

而且我还在 app/etc/modules/Foo_Bar.xml

中配置了模块
<?xml version="1.0" encoding="UTF-8"?>
 <config>
   <modules>
     <Foo_Bar>
        <active>true</active>
        <codePool>local</codePool>
     </Foo_Bar>
  </modules>
</config>

但它确实有效,有人有什么建议吗?

【问题讨论】:

  • 不应该$product.getName()$product-&gt;getName()
  • 非常感谢@JürgenThelen!这花了我两个小时,我仍然像 Java 开发人员一样思考 :)。再次感谢!!

标签: module magento-1.7


【解决方案1】:

您只需要模型的模块名称:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    相关资源
    最近更新 更多