Blog

Trong quá trình thiết kế 1 website, chúng ta sẽ hay gặp trường hợp phải lưu trữ 1 dữ liệu nào đó 1 lần và sau đó nó sẽ tự động bị xóa bỏ. Trong Codeigniter đã xây dựng sẵn 1 phương thức gọi là Flashdata là 1 phương thức cho phép bạn lưu trữ dữ liệu 1 lần và dữ liệu này sẽ tự động bị xóa sau khi bạn tải lại trang. Ví dụ: Hiện thông báo lỗi hoặc thành công sau 1 request nào đó trên website như: Đăng ký thành viên, Thêm/sửa xóa bài viết,…

Flashdata trong Codeigniter

Flashdata trong Codeigniter

Thực tế, dữ liệu này thuộc về thư viện Session trong Codeigniter tuy nhiên Công ty thiết kế website đã tách riêng nó ra 1 nội dung khác để các bạn tiện theo dõi và lượng kiến thức không quá nhiều. Nào, bây giờ chúng ta sẽ cùng tìm hiểu về Flashdata trong Codeigniter!

Khởi tạo 1 flashdata

Do Flashdata thực tế là 1 phương thức trong session, nó chính là 1 session được dùng 1 lần sau đó tự động bị xóa nên việc đầu tiên bạn không được quên là load thư viện ra trước nhé <3

Để khởi tạo 1 flashdata bạn sử dụng cú pháp:

<?php
$this->session->set_flashdata('ten','giatri');
?>

Như vậy chúng ta đã khởi tạo 1 Flashdata có tên là thongbao với giá trị là 1 dòng chữ thông báo cho người sử dụng biết là thành công.

Sử dụng Flashdata như thế nào

Để sử dụng Flashdata trong Codeigniter bạn sử dụng cú pháp:

$this->session->flashdata('tenflashdata');

 

Ví dụ: Controller quản lý bài viết cho thư mục admin, thêm bài viết mới, nếu thành công sẽ báo thành công, thất bại cũng sẽ có thông báo tại trang quản lý bài viết

  • Tạo file application/controller/admin/posts.php
<?php
class Posts extends CI_Controller{
public function index(){
$this->load->view('admin/posts');//load giao diện trang quản lý bài viết của admin
}
public function addpost(){
$this->load-library('session');//Load thư viện session trước
$this->load->helper('url');// Bài này có sử dụng function chuyển hướng redirect() nên tôi phải gọi helper này nữa

//Một loạt set rules cho bài viết với Form validation ở đây, tôi không viết lại nữa các bạn làm tương tự như bài số 9 nhé, viết 1 ví dụ về tên bài viết thôi

$this->form_validation->set_rules('tenbai','Tên bài viết','required');

if($this->form_validation->run()){
//Đoạn này cần viết 1 model để thêm vào CSDL nhưng tôi tạm thời bỏ qua để tập chung vào nội dung chính coi như đã thêm vào CSDL
$this->session->set_flashdata('thongbao','Bạn đã thêm bài viết thành công'); //Tạo ra flashdata
redirect('admin/posts/index'); //chuyển hướng về trang danh sách bài viết sau khi đã thêm thành công
}

}
}
?>
  • In thông báo ra view: Sau khi submit thành công người dùng đã bị chuyển hướng về controller: admin/posts/index mà controller này đang hiện view: admin/posts nên trong file admin/posts.php chúng ta sử dụng như sau:
<!DOCTYPE html>
<html>
<head>
<title>Học Thiết kế website cùng Công ty Thiết kế website OTVINA- Bài 12- Flashdata trong Codeigniter</title>
</head>
<body>
<h1>Danh sách bài viết</h1>
<p class="notice"><?php echo $this->session->flashdata('thongbao'); ?></p>
<table>
<tr>
<td>Tên bài</td>
<td>Người đăng</td>
</tr>
<tr>
<td>Bài viết 1</td>
<td>Vũ Công Tịnh</td>
</tr>
<tr>
<td>Bài viết 2</td>
<td>Vũ Công Tịnh</td>
</tr>
</table>
</body>
</html>

Như vậy mỗi khi view này được tải ra,nếu có Flashdata là thongbao nó sẽ in ra giá trị, và tất nhiên nó chỉ dùng được 1 lần nên bạn chỉ cần tải lại trang sẽ không còn thông báo nữa.

Chính vì vậy Flashdata hay được dùng để hiển thị các thông báo/trạng thái của các request! Công ty thiết kế website OTVINA hy vọng bài viết này sẽ hữu ích với các bạn! <3