Ho un problema con i messaggi Magento. Sto costruendo un modulo personalizzato che in teoria dovrebbe essere in grado di limitare l'accesso ad alcune parti del negozio. Ho creato un osservatore che si aggancia all'evento controller_action_predispatch
e verifica se l'utente può accedere alla richiesta corrente. Se non è possibile accedere all'azione, l'osservatore reindirizza l'utente e imposta le informazioni sull'errore. Voglio impostare l'url di reindirizzamento sulla pagina di provenienza del cliente per evitare di fare clic sull'intero negozio. Sto guardando il HTTP_REFERER
e lo uso se è impostato, altrimenti reindirizzare il cliente alla home page. Il problema è che nel caso successivo (reindirizzamento della home page) tutto funziona alla grande ma quando imposto l'url in base al referente non vedo il messaggio di errore nella finestra del messaggio.Magento che perde i messaggi dopo il reindirizzamento
Il codice dall'osservatore ($name
variabile è una stringa):
Mage::getSingleton('core/session')->addError('Acces to '.$name.' section is denied');
$url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl();
Mage::app()->getResponse()->setRedirect($url);
Quello che ho trovato interessante è che se lo faccio alcun cambiamento nel file di osservatore e salvarlo, quindi la richiesta successiva, che non riesce e viene reindirizzato all'URL di referer mostra l'informazione di errore ma ogni successivo perde i messaggi.
Stavo pensando che il problema è nel pieno URL e il mio instalation locale (sto usando dominio .local), ma così ho provato ad aggiungere
$url = str_replace(Mage::getBaseUrl(), '/', $url);
ma questo non ha aiutato.
Ho anche provato il reindirizzamento utilizzando la funzione php header()
senza alcun risultato.
Tutta la cache è disabilitata. Il flusso di lavoro che fa scattare il problema è il seguente:
- ho intenzione di qualsiasi pagina accessibile (ad esempio/cliente/account)
- Clicca sul carrello di collegamento (spesa per questo account è disabilitata)
- Ritorna al/cliente/account e il messaggio di errore viene visualizzato
- Clicca sul carrello collegamento di nuovo
- Ritorna a/cliente/conto, ma nessun messaggio di errore
Qualsiasi suggerimento su dove guardare sarà apprezzato.
Puoi disattivare tutte le cache (+ FPC se EE magento) per vedere se si tratta di un problema di cache? A proposito, non ho capito tutte le tue spiegazioni, hai capito che i messaggi di errore della sessione vengono cancellati dopo la prima visualizzazione? –
Ho ampliato la descrizione, spero che ora sia chiaro. – Zefiryn