PHP - Flash Messages

Message flashing trong một ứng dụng web PHP đề cập đến kỹ thuật khiến một số thông điệp xuất hiện trên cửa sổ trình duyệt để người dùng nhận phản hồi từ ứng dụng. Để có thể cung cấp cho người dùng phản hồi có ý nghĩa về các tương tác của họ là một nguyên tắc thiết kế quan trọng, mang lại trải nghiệm người dùng tốt hơn.

Trong một ứng dụng web PHP, chúng ta có thể sử dụng dữ liệu phiên (session data) để hiển thị thông báo về sự thành công hoặc thất bại của một hành động nào đó, thông báo hoặc cảnh báo, v.v., từ thời gian này sang thời gian khác để giữ cho người dùng được thông báo.

A flash message cho phép bạn tạo một thông điệp trên một trang và hiển thị nó một lần trên một trang khác. Để chuyển một thông điệp từ trang này sang trang khác, bạn sử dụng biến siêu toàn cục $_SESSION .

Để bắt đầu, bạn thêm một biến vào mảng $_SESSION như sau −

<?php
   session_start();
   $_SESSION['flash_message'] = "Hello World";
?>

Sau đó, điều hướng đến một trang khác, và lấy thông điệp đã được hiển thị từ biến $_SESSION và gán nó cho một biến. Sau đó, bạn có thể hiển thị thông điệp và sau đó xóa thông điệp khỏi $_SESSION.

<?php
   session_start();
   if(isset($_SESSION['flash_message'])) {
      $message = $_SESSION['flash_message'];
      unset($_SESSION['flash_message']);
      echo $message;
   }
?>

Để tổng quát hóa ý tưởng cơ bản về việc xử lý các thông điệp đã hiển thị, chúng ta sẽ viết một hàm thêm một thông điệp vào $_SESSION −

session_start();
function create_flash_message(string $name, string $message): void {

   // remove existing message with the name
   if (isset($_SESSION[FLASH][$name])) {
      unset($_SESSION[FLASH][$name]);
   }
   // add the message to the session
   $_SESSION[FLASH][$name] = ['message' => $message]; 
}

Hãy để chúng ta có một hàm khác đọc lại một thông điệp, hiển thị nó trên trình duyệt, và xóa nó khỏi $_SESSION.

function display_flash_message(string $name): void {
   if (!isset($_SESSION[FLASH][$name])) {
      return;
   }

   // get message from the session
   $flash_message = $_SESSION[FLASH][$name];

   // delete the flash message
   unset($_SESSION[FLASH][$name]);

   // display the flash message
   echo format_flash_message($flash_message);
}

Hàm format_flash_message() áp dụng định dạng mong muốn cho chuỗi thu được với các quy tắc CSS phù hợp.

Nếu có nhiều hơn các tin nhắn đã được ứng dụng hiển thị, tất cả chúng có thể được truy xuất và hiển thị với ví dụ sau −

function display_all_flash_messages(): void {
   if (!isset($_SESSION[FLASH])) {
      return;
   }

   // get flash messages
   $flash_messages = $_SESSION[FLASH];

   // remove all the flash messages
   unset($_SESSION[FLASH]);

   // show all flash messages
   foreach ($flash_messages as $flash_message) {
      echo format_flash_message($flash_message);
   }
}

Sử dụng flash() function sau đây để tạo, định dạng và nhấp nháy các thông điệp.

function flash(string $name = '', string $message = ''): void {
   if ($name !== '' && $message !== '') {
      create_flash_message($name, $message);
   } 
   elseif ($name !== '' && $message === '') {
      display_flash_message($name);		// display a flash message
   } elseif ($name === '' && $message === '' ) {
      display_all_flash_messages(); 	// display all flash message
   }
}

Để triển khai phương pháp trên, hãy gọi flash() function trên trang đầu tiên.

flash('first', 'Hello World');

Đi tới một trang khác và gọi hàm flash() để lấy và hiển thị thông điệp.

flash('first');

Cơ chế sử dụng thông điệp flash thường được áp dụng trên trang đăng ký để chuyển hướng người dùng đến trang đăng nhập với một thông điệp chào mừng sau khi họ đăng ký.