Ho qualche codice nel checkout in cui imposto una chiave nella sessione se quella chiave è impostata su false in qualsiasi punto del checkout ho bisogno di rimandarli alla pagina di fatturazione. Ho il codice per questo, ma non posso nemmeno avere il codice che viene in genere eseguito dopo l'osservatore perché chiamerà un servizio di terze parti e tornerà come errato a causa di questa chiave mancante nella sessioneIn un metodo Observer, come si dice a Magento di non elaborare il codice dopo l'evento inviato
Ecco il mio codice, ho tutto quello che voglio ma ho bisogno che la risposta avvenga immediatamente e per nulla dopo che la riga dell'evento inviato è stata attivata solo la risposta inviata al browser.
public function checkForOrdKey(Varien_Event_Observer $observer)
{
$controllerAction = $observer->getControllerAction();
$request = $controllerAction->getRequest();
$controllerName = $request->getControllerName();
$stepData = $this->_getCheckoutSession()->getStepData();
$ordKeyRemoved = $this->_getCheckoutSession()->getOrdKeyRemoved();
// if it is the checkout onepage controller or inventory controller don't do anything
if (isset($controllerName) && $controllerName === "onepage" && $stepData['shipping']['complete'] && $ordKeyRemoved) {
$this->_getCheckoutSession()->setStepData('shipping', 'complete', false);
$result['goto_section'] = 'billing';
Mage::app()->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
$this->_getCheckoutSession()->setOrdKeyRemoved(false);
}
}
hmm sembra ancora che stia cercando di eseguire il resto del codice anche dopo aver inviato la risposta. –
euch, forse hai bisogno di un 'exit()' dopo il 'sendReponse()' ... –
Ha funzionato dopo aver inserito exit() su di esso, perché è così brutto farlo? –