sto ajaxifying il mio negozio Magento, e praticamente tutto sta andando a meraviglia, tranne una cosa:Utilizzando il sistema di messaggi built-in Magento controller + azione personalizzata
Problema: Mi sembra di essere in grado per recuperare e visualizzare il blocco dei messaggi nelle risposte alle richieste AJAX.
Spiegazione: sto parlando del colore rosso (o verde, quando si tratta di un messaggio di successo) barra che appare all'utente dopo aver provato qualcosa che non ha funzionato (ad esempio l'aggiunta di altri elementi al carrello rispetto alla azione permette). Quando si risponde a determinate richieste di ajax che generano errori, voglio visualizzare il markup dei messaggi attraverso un template praticamente vuoto, che viene usato per rendere la risposta per questa richiesta di ajax. Quando non si verifica alcun errore, viene restituita una risposta appropriata diversa.
Le cose che ho provato: Ecco alcune righe di codice PHP che ho provato ad utilizzare:
$_messages = Mage::getSingleton("core/session")->getMessages();
echo $this->getLayout()->createBlock("core/messages")->setMessages($_messages)->getGroupedHtml();
echo $this->getMessagesBlock()->getGroupedHtml();
echo Mage::app()->getLayout()->getMessagesBlock()->
setMessages(Mage::getSingleton('customer/session')->getMessages(true))->getGroupedHtml();
Mage::log
ging i dati mostrano collezioni Messaggio vuoto.
Ecco il layout XML (sto utilizzando $this->loadLayout('ajax_msg_handle');
dal controller) :.
<ajax_msg_handle>
<block type="core/template" name="error.root" output="toHtml" template="page/html/ajax-messages.phtml">
<block type="core/messages" name="global_messages" as="global_messages"/>
<block type="core/messages" name="messages" as="messages"/>
</block>
</ajax_msg_handle>
anche un punto di dettaglio, ho considerato i seguenti:
maggior parte delle azioni, come il carrello "delete", "modifica" e la pagina del prodotto "aggiungi al carrello", in primo luogo il reindirizzamento un posto diverso, quindi viene fatta una seconda richiesta, che mostra l'errore. Forse questi messaggi non vengono mai visualizzati subito, ma solo quando rispondono alla richiesta dopo quella che genera l'errore. Quindi ho cercato di seguire questa possibile convenzione reindirizzando a un'azione che visualizza questi messaggi, ma anche questo non ha funzionato.
Se qualcuno può dirmi come far apparire quei messaggi, sarà la mia giornata.
Grazie mille! Ancora non so DOVE è stato deciso che un messaggio non è ancora stato mostrato, ma il tuo metodo risolve efficacemente il mio problema. – pancake