magento не удалось загрузить класс наблюдения

когда я пытаюсь написать наблюдателя для события checkout_type_onepage_save_order, как показано ниже

<events>
    <checkout_type_onepage_save_order>
        <observers>
            <Appeal_Consignor_Model_Observer>
                <type>singleton</type>
                <class>consignor/observer</class>
                <method>savedata</method>
            </Appeal_Consignor_Model_Observer>
        </observers>
    </checkout_type_onepage_save_order>
</events>

выше код, который я пробовал в frontend, а также global.

Даже я тоже пытался следовать.

<events>
    <checkout_type_onepage_save_order>
        <observers>
            <Appeal_Consignor_Model_Observer>
                <type>singleton</type>
                <class>Appeal_Consignor_Model_Observer</class>
                            <method>savedata</method>
            </Appeal_Consignor_Model_Observer>
        </observers>
    </checkout_type_onepage_save_order>
</events>

полный файл config.xml выглядит следующим образом

<?xml version="1.0"?>
<config>
    <modules>
        <Appeal_Consignor>
            <version>1.0.1</version>
        </Appeal_Consignor>
    </modules>

    <global>
        <models>
            <consignor>
                <class>Appeal_Consignor_Model</class>
            </consignor>
        </models>
        <resources>
            <consignor_setup>
                <setup>
                    <module>Appeal_Consignor</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </consignor_setup>
            <consignor_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </consignor_write>
            <consignor_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </consignor_read>
        </resources>
        <helpers>
            <consignor>
                <class>Appeal_Consignor_Helper</class>
            </consignor>
        </helpers>
    </global>


    <frontend>
        <routers>
            <consignor>
                <use>standard</use>
                <args>
                    <module>Appeal_Consignor</module>
                    <frontName>consignor</frontName>
                </args>
            </consignor>
        </routers>


        <events>
            <checkout_type_onepage_save_order>
                <observers>
                    <Appeal_Consignor_Model_Observer>
                        <type>singleton</type>
                        <class>Appeal_Consignor_Model_Observer</class>
                        <method>savedata</method>
                    </Appeal_Consignor_Model_Observer>
                </observers>
            </checkout_type_onepage_save_order>

        </events>


    </frontend>
    <adminhtml>
        <layout>
            <updates>
                <consignor>
                    <file>consignor.xml</file>
                </consignor>
            </updates>
        </layout>


    </adminhtml>

</config>

но выходит следующая ошибка. Я очистил кеш 1000 раз, также вручную удалил файл папки var cache.

2012-07-23T11:04:09+00:00 ERR (3): Warning: include(Appeal_Consignor_Model_Observer.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory  in E:\xampp\htdocs\magento\includes\src\Varien_Autoload.php on line 93
2012-07-23T11:04:09+00:00 ERR (3): Warning: include() [<a href='function.include'>function.include</a>]: Failed opening 'Appeal_Consignor_Model_Observer.php' for inclusion (include_path='E:\xampp\htdocs\magento\includes\src;.;E:\xampp\php\PEAR')  in E:\xampp\htdocs\magento\includes\src\Varien_Autoload.php on line 93

person KuKu    schedule 23.07.2012    source источник
comment
вы должны написать таким образом <class>consignor/observer</class> для magento ‹ 2.0. Также вы можете удалить узлы <connection>, <consignor_write> и <consignor_read>. Затем в вашем файле .htaccess установите env var SetEnv MAGE_IS_DEVELOPER_MODE 1. После этого предоставьте нам ближайшие результаты   -  person Sergii Stotskyi    schedule 23.07.2012
comment
Пожалуйста, также опубликуйте файл вашей модели. Я уверен, что вы, должно быть, проверяли это много раз, возможно, имя класса не соответствует имени в config.xml.   -  person Kalpesh    schedule 23.07.2012


Ответы (3)


Это то, что я использую для запуска наблюдателя, когда в корзину добавляется новый продукт:

и т.д.\config.xml

  <?xml version="1.0"?>
    <config>
        <modules>
            <Iln_Cartvalidation>
                <version>0.1.0</version>
            </Iln_Cartvalidation>
        </modules>
        <global>
            <helpers>
                <cartvalidation>
                    <class>Iln_Cartvalidation_Helper</class>
                </cartvalidation>
            </helpers>
        </global>
        <frontend>
            <events>
                <checkout_cart_product_add_after>
                    <observers>
                        <Iln_Cartvalidation_Model_Observer>
                            <type>singleton</type>
                            <class>Iln_Cartvalidation_Model_Observer</class>
                            <method>Mytestmethod</method>
                        </Iln_Cartvalidation_Model_Observer>
                    </observers>
                </checkout_cart_product_add_after>
            </events>
        </frontend>
    </config>

Помощник\Данные.php

    <?php
    class Iln_Cartvalidation_Helper_Data extends Mage_Core_Helper_Abstract {
    } 

Модель\наблюдатель.php

<?php
class Iln_Cartvalidation_Model_Observer {

    public function Mytestmethod($observer) {
        $event = $observer->getEvent(); //Fetches the current event
        $product = $event->getProduct();
        $eventmsg = "Current Event Triggered : " . $event->getName() . "Currently Added Product : " . $product->getName();
        //Adds Custom message to shopping cart
        echo Mage::getSingleton('checkout/session')->addSuccess($eventmsg);
        //Your Custom Logic Here
        print_r($product);
    }

}
person open-ecommerce.org    schedule 23.07.2012

Судя по предупреждению о включении, кажется, что у вас включен компилятор, но он не может найти (сплющенный) файл.

Так что либо отключите компилятор:

php shell/compiler.php disable

Или запустите компиляцию, чтобы она сгенерировала файл для вас:

php shell/compiler.php compile
person Daniel Sloof    schedule 23.07.2012
comment
Этот. Посмотрите на имя файла во включенном состоянии. включить (Appeal_Consignor_Model_Observer.php). Всякий раз, когда вы видите full_underscored_file_name, это означает, что Magento ищет файл в скомпилированной папке. - person Alan Storm; 23.07.2012
comment
Именно то, что сказал @AlanStorm. Еще одна вещь, которая выдает его, — это путь включения (includes\src). - person Daniel Sloof; 23.07.2012

Я думаю, это должно помочь вам:

<events>
    <checkout_type_onepage_save_order>
        <observers>
            <consignor>
                <type>model</type>
                <class>consignor/observer</class>
                <method>savedata</method>
            </consignor>
        </observers>
    </checkout_type_onepage_save_order>
</events>
person vikcherniy    schedule 23.07.2012