【问题标题】:failed to open stream on magento module无法在 magento 模块上打开流
【发布时间】:2014-08-13 16:03:28
【问题描述】:

我正在尝试在特定事件上创建一个观察者,以在会话中保存 url 引用。

我创建了这个结构: http://screencast.com/t/TG7brmUi

模块看起来不错,我可以在 magento 配置中看到。 http://screencast.com/t/5d4FXIJwrGk

代码如下:

Luisvalencia_Affiliate.xml

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

config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Luisvalencia_Affiliate>
            <version>0.0.1</version>
        </Luisvalencia_Affiliate>
    </modules>
    <frontend>
        <events>
            <controller_action_predispatch>
                <observers>
                    <luisvalencia_affiliate>
                        <class>luisvalencia_affiliate/observer</class>
                        <method>captureReferral</method>
                        <type>singleton</type>
                    </luisvalencia_affiliate>
                </observers>
            </controller_action_predispatch>
        </events>
    </frontend>
</config>

和 Observer.php

<?php
class Luisvalencia_Affiliate_Model_Observer
{
    const COOKIE_KEY_SOURCE = 'luisvalencia_affiliate_source';

    public function captureReferral(Varien_Event_Observer $observer)
    {
        $referrer=Mage::app()->getRequest()->getServer('HTTP_REFERER');
        Mage::getSingleton('core/session')->setReferrer($referrer);
        $outputMessage = Mage::getSingleton('core/session')->getReferrer();
        echo $this->__($outputMessage);
    }

    protected function _getCookieLifetime()
    {
        $days = 1;
        // convert to seconds
        return (int)86400 * $days;
    }
}

但是我仍然在 system.log 上看到这个,我不明白。

2014-08-13T15:50:17+00:00 ERR (3): Warning: include(Mage/Luisvalencia/Affiliate/Model/Observer.php): failed to open stream: No such file or directory  in /home/theprint/public_html/preprod/lib/Varien/Autoload.php on line 93
2014-08-13T15:50:17+00:00 ERR (3): Warning: include(Mage/Luisvalencia/Affiliate/Model/Observer.php): failed to open stream: No such file or directory  in /home/theprint/public_html/preprod/lib/Varien/Autoload.php on line 93
2014-08-13T15:50:17+00:00 ERR (3): Warning: include(): Failed opening 'Mage/Luisvalencia/Affiliate/Model/Observer.php' for inclusion (include_path='/home/theprint/public_html/preprod/app/code/local:/home/theprint/public_html/preprod/app/code/community:/home/theprint/public_html/preprod/app/code/core:/home/theprint/public_html/preprod/lib:.:/usr/lib/php:/usr/local/lib/php')  in /home/theprint/public_html/preprod/lib/Varien/Autoload.php on line 93

【问题讨论】:

    标签: php magento zend-framework magento-1.7 php-5.3


    【解决方案1】:

    您需要在您的 config.xml 中定义模型。即您需要将此代码放入您的 config.xml 文件中

    <global>
            <models>
                <luisvalencia_affiliate>
                    <class>Luisvalencia_Affiliate_Model</class>
                </luisvalencia_affiliate>
            </models>      
    </global>
    

    没有这个,Magento 找不到你在观察者中定义的观察者文件。

    【讨论】:

    • 现在我得到了这个 :( 致命错误:调用 /home/theprint/public_html/preprod/app/code/community/Luisvalencia/Affiliate/Model/Observer 中的未定义方法 Luisvalencia_Affiliate_Model_Observer::__() .php 在第 11 行
    • 第 11 行是这样的:echo $this->__($outputMessage);
    • 我在这里更新了我的答案。查看magento.stackexchange.com/questions/32192/…
    • 老兄。谢谢你。我已经搜索了所有 google 的感觉来寻找这个错误的答案,它就像 config.xml 中缺少的节点一样简单。
    猜你喜欢
    • 2015-08-14
    • 2021-04-13
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多