2013-10-15 2 views
1

У меня есть расширениеMagento: Невозможно изменить значение Mage :: getSingleton ('core/session')?

в файле контроллера PHP У меня есть строки ниже

public function accountverificationAction() { 
     $customerEmail = Mage::getSingleton('customer/session')->getCustomer()->getEmail(); 
     $mobile_num = $this->getRequest()->getParam('mobile_number'); 
     $mobile_code = $this->getRequest()->getParam('mobile_code');   
     $smsModel = Mage::getModel('ardindata/ardindata'); 

     Mage::getSingleton('core/session')->setVerificationphase('mobile'); 

     if($mobile_num) { 
      $sms_response = $smsModel->sendSms($mobile_num,$customerEmail); 
      if(is_numeric($sms_response)) { 
       Mage::getSingleton('core/session')->setVerificationphase('code'); 
      } else { 
       if(empty($sms_response)) { 
        $message = $this->__('Error: Please enter a valid mobile number'); 
       } else { 
        $message = $this->__('Error: '.$sms_response); 
       } 
       Mage::getSingleton('core/session')->addError($message); 
      } 
     } 

    if($mobile_code) { 
     $verificationCompleted = $smsModel->customerVerification($customerEmail,$mobile_code); 
     if($verificationCompleted != '1') { 
      $message = $this->__('Verification Failed!'); 
      Mage::getSingleton('core/session')->addError($message); 
     } 
    } 

    $this->loadLayout(); 
    $this->renderLayout(); 
} 

Итак, я установил значение "мобильный" первый в Mage :: getSingleton ('ядро/сессии') ... Я хочу, чтобы изменить его «код» после того, как если (is_numeric ($ sms_response)) но не меняют и эхо только «мобильный»!

Я не знаю, почему, может ли кто-нибудь помочь мне решить эту проблему?

Спасибо всем

ответ

0

Перед назначением нового значения переменной ядра/сеанса, вам нужно, чтобы сбросить старый присвоенное значение.

Полный код функции после коррекции:

public function accountverificationAction() { 
    $customerEmail = Mage::getSingleton('customer/session')->getCustomer()->getEmail(); 
    $mobile_num = $this->getRequest()->getParam('mobile_number'); 
    $mobile_code = $this->getRequest()->getParam('mobile_code');   
    $smsModel = Mage::getModel('ardindata/ardindata'); 

    Mage::getSingleton('core/session')->setVerificationphase('mobile'); 

    if($mobile_num) { 
     $sms_response = $smsModel->sendSms($mobile_num,$customerEmail); 
     if($sms_response) { 
      Mage::getSingleton('core/session')->unsVerificationphase(); 
      Mage::getSingleton('core/session')->setVerificationphase('code'); 
     } else { 
      if(empty($sms_response)) { 
       $message = $this->__('Error: Please enter a valid mobile number'); 
      } else { 
       $message = $this->__('Error: '.$sms_response); 
      } 
      Mage::getSingleton('core/session')->addError($message); 
     } 
    } 
+0

сделал тест раньше, но не работает! --- Кажется, что ценность не может выйти за пределы if! – sIiiS

+0

переменная core/session глобально не ограничена областью, попробуйте напечатать 'Mage :: getSingleton ('core/session') -> getVerificationphase();' перед отменой и набором нового значения в переменной сеанса. –

+0

Я устанавливаю echo 'Mage :: getSingleton ('core/session') -> getVerificationphase();' в файле шаблона и задает echo 'Mage :: getSingleton ('core/session') -> getVerificationphase();' after 'Mage :: getSingleton ('core/session') -> setVerificationphase ('code');' в файле контроллера ... но я не знаю, почему в файле шаблона «код» не может вернуться и все время «mobile»! - в шаблоне: '$ verification_failure = Mage :: getSingleton ('core/session') -> getVerificationphase(); \t echo $ verification_failure; \t if (empty ($ verification_failure) || ($ verification_failure == 'mobile')): ' – sIiiS