Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento事件观察器或自定义模块不适用于生产环境_Php_Magento_Observers - Fatal编程技术网

Php Magento事件观察器或自定义模块不适用于生产环境

Php Magento事件观察器或自定义模块不适用于生产环境,php,magento,observers,Php,Magento,Observers,我正在尝试为Magento使用多个observer类和模块,所有这些类和模块都被放入app/code/local。这些都可以在我的本地工作站上工作,但当我通过FTP将它们复制到生产环境中时,它们将不起作用。我要发疯了,想弄清楚到底发生了什么。我所有的代码似乎都是正确的。下面是一个观察者的例子: app/code/local/Mural/Pricing/Model/Observer.php <?php class Mural_Pricing_Model_Observer { pub

我正在尝试为Magento使用多个observer类和模块,所有这些类和模块都被放入app/code/local。这些都可以在我的本地工作站上工作,但当我通过FTP将它们复制到生产环境中时,它们将不起作用。我要发疯了,想弄清楚到底发生了什么。我所有的代码似乎都是正确的。下面是一个观察者的例子:

app/code/local/Mural/Pricing/Model/Observer.php

<?php 
class Mural_Pricing_Model_Observer {
    public function setMuralPricing($observer) {
        echo 'We did it!';
        die();
    } 
}

0.0.1
壁画定价模型
壁画定价/观察员
地价
app/etc/modules/Mural_Pricing.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Mural_Pricing>
            <codePool>local</codePool>
            <active>true</active>
            <depends>
                <Mage_Catalog />
            </depends>
        </Mural_Pricing>
    </modules>
</config>

地方的
真的

正如我所说,这在本地运行良好,但在生产环境中不起作用,因为有几个不同的观察者和模块。令人沮丧的。提前谢谢你

我注意到的第一件事是,您的观察员声明是对您观察到的事件调用
mural\u pricing/observer::setMuralPricing()

如果您查看配置XML,您在本模块中将模型注册为
Mural\u Pricing/…
,按照以下XML:

<models>
    <Mural_Pricing>
        <class>Mural_Pricing_Model</class>
    </Mural_Pricing>
</models>

壁画定价模型
Magento的最佳实践似乎是对类别名使用所有小写字母,因此我建议您将其更改为
mural\u pricing
。如果您将observer声明更改为使用大写等效项,它也会起作用

另一方面,我认为你给这个标签起什么名字并不重要,但是
下面的
标签应该理想地代表一个简短的描述,描述你的观察者所做的事情(同样,我认为这并不重要)-例如

最后,必须指出的是——确保已正确清除缓存以重新解析XML配置。如果您在production vs dev/staging/local中使用Redis或其他缓存体系结构,那么您可能忘记了以与本地不同的方式清除缓存


最终,除了类别名和观察者声明中的大小写差异外,您的模块看起来还不错。

谢谢您的反馈!即使在执行了你的建议之后,我也无法使这项工作发挥作用,但不管怎样,这都是有用的建议。
<models>
    <Mural_Pricing>
        <class>Mural_Pricing_Model</class>
    </Mural_Pricing>
</models>