Cách hiển thị thông báo thành công trong phiên Magento2


12

Trong magento 1 tôi có thể làm như thế này

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

Điều tương tự làm thế nào tôi có thể làm điều đó trong Magento2? Đã thử điều này nhưng không hoạt động.


Bạn có thể đặt và nhận các giá trị theo phiên, bạn có muốn chỉ sử dụng phiên không? bạn đã thử Message \ ManagerInterface $ messageManager
Krishna ijjada

Tôi đã thử điều này nhưng không có may mắn.
Naveenbos

Bạn có muốn chỉ sử dụng phiên?
Krishna ijjada

Tôi đang cố gắng hiển thị một thông báo thành công sau khi gửi biểu mẫu thành công.
Naveenbos

@ Naveen Kiểm tra câu trả lời của tôi được thêm vào
Krishna ijjada

Câu trả lời:


20

Trong Magento 2, chúng ta có thể đạt được điều này theo hai bước:

Trước tiên, chúng tôi cần gán tin nhắn cho 'messageManager' từ mô-đun của bạn như dưới đây:

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

Thứ hai, chúng ta cần chỉ định một trình giữ chỗ cho thông báo thông qua bố cục giao diện xml được sử dụng trong mô-đun như được đưa ra bên dưới <body>thẻ:

<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>

Bản cập nhật bố cục ở trên sẽ sử dụng mẫu tin nhắn của magento để hiển thị các tin nhắn.


, Làm cách nào để thêm vùng chứa tham chiếu này trong phần phụ trợ
Jaisa

XML có thực sự cần thiết ở đây không?
Wouter

10

Magento2 đang sử dụng MessageInterface để thêm tất cả tin nhắn, vui lòng sử dụng mã bên dưới để hiển thị Tin nhắn

Lớp khung tin nhắn Magento

\Magento\Framework\Message\ManagerInterface

sử dụng mã dưới đây trong tập tin của bạn để thêm tin nhắn,

protected _messageManager;

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

và sau đó thêm các chức năng dưới đây trong phương thức của bạn để hiển thị thông báo:

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

Tôi hy vọng điều này sẽ giúp bạn khắc phục vấn đề của bạn.


tập tin nào tôi muốn thêm mã này
Naveenbos

3

Bạn có thể thử mã dưới đây để thêm Thông báo thành công hoặc lỗi.

$this->messageManager là trong lớp cha mẹ gọi từ

\ Magento \ Framework \ Ứng dụng \ Hành động \ Hành động

$ this-> messageManager = $ bối cảnh-> 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;
    }

Bạn có thể gán tin nhắn cho messageManager

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

Bạn có thể tìm thêm một số thông tin về cách Hiển thị tin nhắn thông báo

Hi vọng điêu nay co ich.


1
Không sử dụng Trình quản lý đối tượng trực tiếp.
Jisse Reitsma

2

Tập tin bố trí tùy chỉnh

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

Sử dụng điều này trong tệp bố cục tùy chỉnh của bạn để hiển thị thông báo Lỗi và thông báo Thành công cho tệp mẫu tùy chỉnh của bạn.

Tập tin điều khiển tùy chỉnh

 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;

Nếu bạn đăng mã dưới dạng câu trả lời, ít nhất vui lòng giải thích ngắn gọn mã này đang làm gì và nó thuộc về đâu. Câu trả lời với mã nhưng không có lời giải thích hiếm khi hữu ích.
Siarhey Uchukhlebau

@Jeeva Chezhiyan, tôi cần thêm phần này vào phần phụ trợ, trong đó tôi cần thêm phần chứa tham chiếu ở trên
Jaisa

Tôi đang gọi bộ điều khiển tge bằng ajax, nhưng tôi không muốn gửi trạng thái phản hồi thành công cho js, ​​tôi chỉ cần hiển thị tin nhắn của mình bằng messagemanager, điều này là có thể
Jaisa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.