Comment afficher le message de réussite dans la session Magento2


12

Dans magento 1, je peux le faire comme ça

$session            = Mage::getSingleton('core/session');
$session->addSuccess($this->__('Your Request has been received. One of our sales representatives will contact you shortly.'));

Même chose, comment puis-je le faire dans Magento2? J'ai essayé ça mais ça ne marchait pas.


Vous pouvez définir et obtenir les valeurs par session, voulez-vous utiliser uniquement la session? avez-vous essayé Message \ ManagerInterface $ messageManager
Krishna ijjada

j'ai essayé mais pas de chance.
Naveenbos

voulez-vous utiliser uniquement la session?
Krishna ijjada

J'essaie d'afficher un message de réussite après avoir soumis le formulaire avec succès.
Naveenbos

@ Naveen Vérifiez ma réponse ajoutée
Krishna ijjada

Réponses:


20

Dans Magento 2, nous pouvons y parvenir en deux étapes:

Tout d'abord, nous devons attribuer le message à «messageManager» de votre module comme ci-dessous:

$this->messageManager->addSuccess(__('This is a success message.'));

Deuxièmement, nous devons attribuer un espace réservé pour le message via le format XML frontal utilisé dans le module, comme indiqué ci-dessous à l'intérieur de la <body>balise:

<referenceContainer name="page.messages">
        <block class="Magento\Framework\View\Element\Template" name="ajax.message.placeholder" template="Magento_Theme::html/messages.phtml"/>
        <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages" template="Magento_Theme::messages.phtml"/>
</referenceContainer>

La mise à jour de la mise en page ci-dessus utilisera le modèle de message de magento pour afficher les messages.


, Comment ajouter ce conteneur de référence dans le backend
Jaisa

Le XML est-il vraiment nécessaire ici?
Wouter

10

Magento2 utilise MessageInterface pour ajouter tous les messages, veuillez utiliser le code ci-dessous pour afficher les messages

Classe Magento Message Framework

\Magento\Framework\Message\ManagerInterface

utilisez le code ci-dessous dans votre fichier pour ajouter des messages,

protected _messageManager;

public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\Message\ManagerInterface $messageManager) {
        parent::__construct($context);
        $this->_messageManager = $messageManager;
    }

puis ajoutez les fonctions ci-dessous dans vos méthodes pour afficher les messages:

$this->_messageManager->addError(__("Error Message"));
$this->_messageManager->addWarning(__("Warning"));
$this->_messageManager->addNotice(__("Notice"));
$this->_messageManager->addSuccess(__("Success Message"));

J'espère que cela vous aidera à résoudre votre problème.


quel fichier je veux ajouter ce code
Naveenbos

3

Vous pouvez essayer le code ci-dessous pour ajouter des messages de réussite ou d'erreur.

$this->messageManager était en classe parent appelant de

\ Magento \ Framework \ App \ Action \ Action

$ this-> messageManager = $ context-> getMessageManager ();

class Post extends \Magento\Framework\App\Action\Action
{

    public function __construct(
        \Magento\Framework\App\Action\Context $context
    ) {
        parent::__construct($context);
    }
    public function execute()
    {

$data = $this->getRequest()->getPostValue();

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();       
$question = $objectManager->create('Myvendor\Mymodule\Model\Feedback');

/****** set your data *********/
$question->setData($data);
$question->save();

$this->messageManager->addSuccess( __('Thanks for your valuable feedback.') );

/* ***** OR

$this->messageManager->addError('There is something went wrong');
$this->_redirect('*/');
return;
    }

Vous pouvez attribuer des messages à messageManager

$this->_messageManager->addError(__("Error"));
$this->_messageManager->addWarning(__("Warning"));
$this->_messageManager->addNotice(__("Notice"));
$this->_messageManager->addSuccess(__("Success"));

Vous pouvez trouver plus d'informations sur la façon d' afficher les messages de notification

J'espère que cela t'aides.


1
N'utilisez pas directement le gestionnaire d'objets.
Jisse Reitsma

2

Fichier de mise en page personnalisé

<referenceContainer name="page.messages">
        <block class="Magento\Framework\View\Element\Messages" name="messages" as="messages"/>
 </referenceContainer>

Utilisez-le dans votre fichier de présentation personnalisé pour afficher le message d'erreur et le message de réussite de votre fichier de modèle personnalisé.

Fichier contrôleur personnalisé

 try{
        $school_model->save();
        $this->messageManager->addSuccess(
                    __('Thanks for Submission'));
    }catch (\Exception $e) {
        $this->messageManager->addError(
                    __('We can\'t process your request right now. Sorry, that\'s all we know.'));   
    }
    $this->_redirect('*/*/');
    return;

Si vous postez du code comme réponse, veuillez au moins expliquer brièvement ce que fait ce code et où il appartient. Les réponses avec du code mais aucune explication sont rarement utiles.
Siarhey Uchukhlebau

@Jeeva Chezhiyan, je dois ajouter ceci dans le backend, où j'ai besoin d'ajouter le conteneur de référence ci-dessus
Jaisa

j'appelle le contrôleur tge en utilisant ajax, mais je ne veux pas envoyer le statut de réussite de la réponse à js, j'ai juste besoin de montrer mon message en utilisant messagemanager, est-ce possible
Jaisa
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.