2014-08-13 2 views
1

Я пытаюсь создать наблюдателя на конкретном событии, чтобы сохранить на сессии URL-адрес источника.не удалось открыть поток на модуле magento

Я создал эту структуру: 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 

ответ

5

Вам нужно определить модель в вашем config.xml.ie вам нужно поместить этот код в файле config.xml

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

Без этого, Magento не может найти файл наблюдателя, который вы определили в наблюдателе.

+0

сейчас я получил это :(Неустранимая ошибка: вызов неопределенного метода Luisvalencia_Affiliate_Model_Observer :: __() в /home/theprint/public_html/preprod/app/code/community/Luisvalencia/Affiliate/Model/Observer.php в строке 11 –

+0

строка 11 это: echo $ this -> __ ($ outputMessage); –

+0

Я обновил свой ответ здесь. Посмотрите http://magento.stackexchange.com/questions/32192/failed-to-open-stream-on -magento-module/32196 # 32196 –

Смежные вопросы