Quiero mostrar un mensaje de error o de éxito en mi módulo magento 2. He extendido mi controlador de front-end con el nombre de la clase \Magento\Framework\App\Action\Action. Luego redirijo al cliente a la página de inicio usando el siguiente código
$this->messageManager->addError($SomeMessage);
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setPath($base_path);
Todo funciona bien pero esta línea nunca imprime el error
$this->messageManager->addError($SomeMessage);
magento2
session
magento2-dev-beta
global-messages
Shaheer Ali
fuente
fuente

Respuestas:
Me he enfrentado a un problema relacionado con la visualización del mensaje en la fuente Beta de Magento2. En algunas fuentes, por defecto, se muestra un mensaje de error y éxito, pero en algunos casos no se muestra, siga los pasos a continuación.
Paso 1: he creado el archivo Message.php en mi módulo personalizado en Darsh \ Crud \ Block \ Message.php
espacio de nombres Darsh \ Crud \ Block; El mensaje de clase se extiende \ Magento \ Framework \ View \ Element \ Messages { función pública __construct ( \ Magento \ Framework \ View \ Element \ Template \ Context $ context, \ Magento \ Framework \ Message \ Factory $ messageFactory, \ Magento \ Framework \ Message \ CollectionFactory $ collectionFactory, \ Magento \ Framework \ Message \ ManagerInterface $ messageManager, matriz $ datos = [] ) { parent :: __ construct ( $ contexto, $ messageFactory, $ collectionFactory, $ messageManager, $ datos ); } función protegida _prepareLayout () { $ this-> addMessages ($ this-> messageManager-> getMessages (true)); return parent :: _ prepareLayout (); } }Paso 2: Se agregó un bloque de mensajes al administrador en Darsh \ Crud \ view \ frontend \ layout \ crud_index_form.xml
Agregue la etiqueta de apertura y cierre <> para el controlador de diseño.
Ahora puede ver su mensaje personalizado agregado en Darsh \ Crud \ Controller \ Index \ Form.
Si tiene algún problema, consulte el Módulo de ejemplo en https://github.com/Darshanmodi1427/Magento2_Crud_Operation.git
fuente
En el archivo de diseño, he usado el siguiente código. ahora recibí el mensaje en la interfaz.
fuente
Me enfrenté al mismo problema y pude solucionarlo agregando lo siguiente en mi archivo de diseño:
Esto debería arreglarlo;)
fuente
¿Has intentado devolver tu última línea del código?
La
addErrorfunción real se ve bien a menos que la$SomeMessagevariable esté vacía, ¿lo ha verificado también?Si eso falla, puede intentar redirigir usando la
_redirectfunción como:Tal vez la
resultRedirectfunción borra la sesión de mensajes para que su mensaje nunca se muestre.fuente
Sí, he agregado un mensaje usando el objeto $ resultRedirect con
$ resultRedirect-> setUrl ($ this -> _ redirect ('crud / index / form'));Por favor, vea el código del controlador a continuación
espacio de nombres Darsh \ Crud \ Controller \ Index; use Magento \ Framework \ App \ Filesystem \ DirectoryList; class Post extiende \ Magento \ Contact \ Controller \ Index { // clase Post extiende \ Magento \ Framework \ App \ Action \ Action { función pública execute () { $ datos = $ this-> getRequest () -> getPostValue (); if (! $ data) { $ this -> _ redirect ('crud / index / form'); regreso; } $ resultRedirect = $ this-> resultRedirectFactory-> create (); tratar { $ model = $ this -> _ objectManager-> create ('Darsh \ Crud \ Model \ Crud'); if (isset ($ _ FILES ['image'] ['name']) && $ _FILES ['image'] ['name']! = '') { tratar { $ uploader = $ this -> _ objectManager-> create ('\ Magento \ MediaStorage \ Model \ File \ Uploader', array ('fileId' => 'image')); $ uploader-> setAllowedExtensions (array ('jpg', 'jpeg', 'gif', 'png')); $ uploader-> setAllowRenameFiles (verdadero); $ uploader-> setFilesDispersion (verdadero); $ mediaDirectory = $ this -> _ objectManager-> get ('Magento \ Framework \ Filesystem') -> getDirectoryRead (DirectoryList :: MEDIA); $ config = $ this -> _ objectManager-> get ('Darsh \ Crud \ Model \ Crud'); $ result = $ uploader-> save ($ mediaDirectory-> getAbsolutePath ('bannerslider / images')); unset ($ resultado ['tmp_name']); unset ($ resultado ['ruta']); $ data ['imagen'] = $ resultado ['archivo']; } catch (Excepción $ e) { $ data ['imagen'] = $ _FILES ['imagen'] ['nombre']; } } else if (isset ($ data ['imagen'] ['eliminar'])) { $ data ['image'] = ''; } else if (isset ($ data ['imagen'] ['valor'])) { $ data ['imagen'] = $ data ['imagen'] ['valor']; } $ modelo-> setData ($ datos); $ model-> setStoreId ($ this-> storeManager-> getStore () -> getId ()) -> setStores ([$ this-> storeManager-> getStore () -> getId ()]) -> guardar (); tratar { $ modelo-> save (); $ this-> messageManager-> addSuccess ( __ ("Gracias por contactarnos con sus comentarios y preguntas. Le responderemos muy pronto") ); // $ this -> _ redirect ('crud / index / form'); //regreso; } catch (\ Exception $ e) { $ this-> messageManager-> addError ( __ ('No podemos procesar su solicitud en este momento. Lo sentimos, eso es todo lo que sabemos')); // $ this -> _ redirect ('crud / index / form'); //regreso; } } catch (\ Exception $ e) { $ this-> messageManager-> addError ( __ ('No podemos procesar su solicitud en este momento. Lo sentimos, eso es todo lo que sabemos'). ); // $ this -> _ redirect ('crud / index / form'); //regreso; } $ resultRedirect-> setUrl ($ this -> _ redirect ('crud / index / form')); return $ resultRedirect; } }Gracias.
fuente
Intente usar XDEBUG, establezca el punto de interrupción en la acción de su controlador. Tal vez fue duplicar la redirección y hacer que los mensajes perdidos en el administrador.
fuente