2017-07-17 5 views
0

Magento 1.9.0で作業していますが、cronに放棄されたカートコールを取得させようとしていますが、例外が発生しています。非オブジェクト上のgetFullActionName()メンバ関数の呼び出し

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 
) 

基本的には、その時点では失敗しており、AOEスケジューラに従って進んでいません。

ここにローカルモジュールのコードを示します。

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); 
     } 
    } 
} 

答えて

1

getAction()はおそらくnullを返します。 よりよい方法は、そうするでしょう

$action = Mage::app()->getRequest()->getActionName(); 

これは文字列を返します。あなたのif条件で、

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

それは、その特定の問題のために働くように見えました。今私は解決する別のMageMonkeyエラーがあります。 – user2875029

+0

今、これを見て:TRIGGER:シャットダウン機能 最終エラー: アレイ ( [タイプ] => 1 [メッセージ] =>クラスのMage_Sweetmonkey_Helper_Data 'が見つかりません [ファイル] =>/chroot環境/ホーム/ ABC/URLを.htmlの/ストア/アプリ/ Mage.php [行] => 547 ) バックログ:/chroot/home/bonniemo/bonniemohr.com/html/store/app/code/community/で 例外 '例外' Aoe/Scheduler/Helper/GracefulDead.php:53 スタックトレース: #0 [内部関数]:Aoe_Scheduler_Helper_GracefulDead :: beforeDyingShutdown() – user2875029

+0

これは答えとして受け入れるべきです。あなたの新しい問題は第三者エクステンションに関連しているように見え、自分自身の質問として尋ねられるべきです –