Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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 对非对象调用成员函数getFullActionName()_Php_Magento_Exception_Error Handling_Magento 1.9 - Fatal编程技术网

Php 对非对象调用成员函数getFullActionName()

Php 对非对象调用成员函数getFullActionName(),php,magento,exception,error-handling,magento-1.9,Php,Magento,Exception,Error Handling,Magento 1.9,我正在使用Magento 1.9.0,我正在尝试让cron接收一个废弃的cart调用,但有一个异常一直在发生 TRIGGER: shutdown function Last error: Array ( [type] => 1 [message] => Call to a member function getFullActionName() on a non-object [file] => /chroot/home/abc/URL.com/html

我正在使用Magento 1.9.0,我正在尝试让cron接收一个废弃的cart调用,但有一个异常一直在发生

TRIGGER: shutdown function
Last error: 
Array
(
    [type] => 1
    [message] => Call to a member function getFullActionName() on a non-object
    [file] => /chroot/home/abc/URL.com/html/store/app/code/local/Mnwebco/Personalize/Model/Observer.php
    [line] => 9
)
根据AOEscheduler的说法,基本上它在那个点上失败了,没有前进

这是本地模块的代码

class Mnwebco_Personalize_Model_Observer
{
    public function catalogProductLoadAfter(Varien_Event_Observer $observer)
    {
        // set the additional options on the product
        $action = Mage::app()->getFrontController()->getAction();
        if ($action->getFullActionName() == 'checkout_cart_add' ||  $action->getFullActionName() == 'checkout_cart_updateItemOptions') {
            // assuming you are posting your custom form values in an array called extra_options...
            //if ($options = $action->getRequest()->getParam('extra_options'))
            //Mage::log('req parms '.$action->getRequest()->getParam('custommessage'));
            if ($action->getRequest()->getParam('custommessage')!='') {
                $personvalue = $action->getRequest()->getParam('custommessage');
                $product = $observer->getProduct();

                // add to the additional options array
                $additionalOptions = array();
                if ($additionalOption = $product->getCustomOption('additional_options')) {
                    $additionalOptions = (array) unserialize($additionalOption->getValue());
                }

                $additionalOptions[] = array(
                    'label' => 'Message to add',
                    'value' => $personvalue,
                );

                // add the additional options array with the option code additional_options
                $observer->getProduct()
                    ->addCustomOption('additional_options', serialize($additionalOptions));
            } elseif ($action->getRequest()->getParam('customsigmessage')!='') {
                $personvalue = $action->getRequest()->getParam('customsigmessage');
                $product = $observer->getProduct();

                // add to the additional options array
                $additionalOptions = array();
                if ($additionalOption = $product->getCustomOption('additional_options')) {
                    $additionalOptions = (array) unserialize($additionalOption->getValue());
                }

                $additionalOptions[] = array(
                    'label' => 'Message to add with signature',
                    'value' => $personvalue,
                );

                // add the additional options array with the option code additional_options
                $observer->getProduct()
                    ->addCustomOption('additional_options', serialize($additionalOptions));

                } elseif ($action->getRequest()->getParam('bridesname')!='') {
                    $bride = $action->getRequest()->getParam('bridesname');
                    $groom = $action->getRequest()->getParam('groomsname');
                    $wedding = $action->getRequest()->getParam('weddingdate');

                    $product = $observer->getProduct();

                    // add to the additional options array
                    $additionalOptions = array();
                    if ($additionalOption = $product->getCustomOption('additional_options')) {
                        $additionalOptions = (array) unserialize($additionalOption->getValue());
                    }

                    $additionalOptions[] = array(
                        'label' => 'Personalized Information',
                        'value' => 'Bride: '.$bride.', Groom: '.$groom.', Date: '.$wedding,
                    );

                    /*
                    $additionalOptions[] = array(
                        'label' => 'bridesname',
                        'value' => $bride,
                    );
                    $additionalOptions[] = array(
                        'label' => 'groomsname',
                        'value' => $groom,
                    );
                    $additionalOptions[] = array(
                        'label' => 'weddingdate',
                        'value' => $wedding,
                    );
                    */

                    // add the additional options array with the option code additional_options
                    $observer->getProduct()
                        ->addCustomOption('additional_options', serialize($additionalOptions));
                }
         }
    }

    public function checkoutCartUpdateItemsBefore (Varien_Event_Observer $observer)
    {
        // set the additional options on the product
        $action = Mage::app()->getFrontController()->getAction();
        //Mage::log('!imp '.$action->getFullActionName());
        if ($action->getFullActionName() == 'checkout_cart_updateItemOptions') {
            // assuming you are posting your custom form values in an array called extra_options...
            //if ($options = $action->getRequest()->getParam('extra_options'))
            //Mage::log('req parms '.$action->getRequest()->getParam('custommessage'));
            if ($action->getRequest()->getParam('custommessage')!='') {
                $personvalue = $action->getRequest()->getParam('custommessage');
                $product = $observer->getItem()->getProduct();

                // add to the additional options array
                $additionalOptions = array();
                if ($additionalOption = $product->getCustomOption('additional_options')) {
                    $additionalOptions = (array) unserialize($additionalOption->getValue());
                }

                $additionalOptions[] = array(
                    'label' => 'Message to add',
                    'value' => $personvalue,
                );

                // add the additional options array with the option code additional_options
                $observer->getItem()->getProduct()
                    ->addCustomOption('additional_options', serialize($additionalOptions));
            } elseif ($action->getRequest()->getParam('customsigmessage')!='') {
                $personvalue = $action->getRequest()->getParam('customsigmessage');
                $product = $observer->getItem()->getProduct();

                // add to the additional options array
                $additionalOptions = array();
                if ($additionalOption = $product->getCustomOption('additional_options')) {
                    $additionalOptions = (array) unserialize($additionalOption->getValue());
                }

                $additionalOptions[] = array(
                    'label' => 'Message to add with signature',
                    'value' => $personvalue,
                );

                // add the additional options array with the option code additional_options
                $observer->getItem()->getProduct()
                    ->addCustomOption('additional_options', serialize($additionalOptions));
            } elseif ($action->getRequest()->getParam('bridesname')!='') {
                $bride = $action->getRequest()->getParam('bridesname');
                $groom = $action->getRequest()->getParam('groomsname');
                $wedding = $action->getRequest()->getParam('weddingdate');

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

                // add to the additional options array
                $additionalOptions = array();
                if ($additionalOption = $product->getCustomOption('additional_options')) {
                    $additionalOptions = (array) unserialize($additionalOption->getValue());
                }

                $additionalOptions[] = array(
                    'label' => 'Personalized Information',
                    'value' => 'Bride: '.$bride.', Groom: '.$groom.', Date: '.$wedding,
                );

                // add the additional options array with the option code additional_options
                $observer->getItem()->getProduct()
                    ->addCustomOption('additional_options', serialize($additionalOptions));
            }
         }
    }

    public function salesConvertQuoteItemToOrderItem (Varien_Event_Observer $observer)
    {
         $quoteItem = $observer->getItem();
         if ($additionalOptions = $quoteItem->getOptionByCode('additional_options')) {
            $orderItem = $observer->getOrderItem();
            $options = $orderItem->getProductOptions();
            $options['additional_options'] = unserialize($additionalOptions->getValue());
            $orderItem->setProductOptions($options);
        }
    }
}
您的getAction()可能返回null。 更好的方法是这样做

$action = Mage::app()->getRequest()->getActionName();
这将返回一个字符串。因此,在您的if条件下,使用

if($action == 'checkout_cart_add' ||  $action == 'checkout_cart_updateItemOptions') {}

太棒了,这似乎对那个特殊问题有效。现在我有另一个MageMonkey错误需要解决。现在看到这个:触发器:关闭函数最后一个错误:数组([type]=>1[message]=>Class'Mage\u Sweetmonkey\u Helper\u Data'未找到[file]=>/chroot/home/abc/url.html/store/app/Mage.php[line]=>547)Backlog:exception“exception”位于/chroot/home/bonniemo/bonniemohr.com/html/store/app/code/community/Aoe/Scheduler/Helper/GracefulDead.php:53堆栈跟踪:#0[内部函数]:Aoe#u Scheduler_Helper_GracefulDead::beforeDyingShutdown()您应该接受这个答案。你的新问题看起来与第三方扩展有关,应该像它自己的问题一样提问,他的回答很有帮助。