Session trong CakePHP cũng như biến $_SESSION nó cung cấp một cách lưu lại dữ liệu của người dùng giữa các trang.

Khai báo:

Chúng ta đã tìm hiểu Helper và Component thông qua 2 biến $helper và $component

Cách khai báo của chúng như sau:

public $helpers = array('Html','Form');
public $components = array('Data', 'Acl');

Các thành phần trên: Html, Form, Data, Acl… phải khai báo đúng vào 2 biến $helper, $component. Nhưng đối với Session thì khai báo ở biến nào cũng có thể sử dụng(mình thường dùng trong biến $component)

public $helper = array('Html','Session');
public $components = array('Data','Session');

Sử dụng:

1) Tạo session: write($name, $value)

– Lưu session có giá trị $value và biến $name.

– $name có thể sử dung thêm dấu “.” để tạo thành mảng

//Viết theo cách bình thường
$this->Session->write('Username','nongdanit');
//Viết theo dạng mảng Name
$this->Session->write('Name.fullname','Nguyen Van A');
$this->Session->write('Name.email','abc@nongdanit.info');

2) Gọi session : read($name) sử dụng giá trị của session thông qua $name

Gọi lại session đã tạo ở trên:

echo $this->Session->read('Username');// nongdanit
$mang = $this->Session->read('Name');// biến $mang là một array

3) Kiểm tra session: check($name) kiểm tra xem có tồn tại session có tên $name hay không return ra true hoặc false

if($this->Session->check('Username')){

//return true

}else{

//return false

}

4) Đọc và xóa: consume($name) đọc và xóa giá trị session có tên $name, điều này hữu ít khi muốn đọc và xóa session ngay

$abc = $this->Session->consume('Username');

5) Xóa session: delete($name) xóa giá trị session có tên $name

$this->Session->delete('Username'); //Xóa session bình thường
$this->Session->delete('Name.email');// Xóa 1 session trong mảng
$this->Session->delete('Name'); //Xóa toàn bộ session trong mảng

6) Xóa toàn bộ cookie và session: destroy()

$this->Session->destroy();

7) Tạo thông báo: setFlash(string $message, string $element = ‘default’, array $params = array(), string $key = ‘flash’)

– $message: nội dung thông báo.

– $element: mặc định là default, load file hiển thị nội dung thông báo (một templete) là file .ctp trong thư mục app/View/Elements/

– $params: chứa các thuộc tính về  id, class, style,…

– $key: có thể rỗng mặc định là flash

Ví dụ: ta tạo file thông báo flash_custom.ctp trong thư mục app/View/Elements/ có nội dung

<div id="abc" class='ex' style="color: red;"><?php echo $message; ?></div>

Sau đó thực hiện lệnh trong controller là:

$this->Session->setFlash(
 'Example message text flash_custom',
 'flash_custom'
);

Khi được hiển thị ngoài view thì flash_custom.ctp sẽ là:

<div id="abc" class="ex" style="color: red;">Example message text flash_custom </div>

Bài hướng dẫn đến đây là hết. Các bạn tải các file về chạy thử với url: http://localhost:8080/cakephp/sessions/index

2015-10-19_164110

Kết luận

  1. Nếu có thắc mắc gì các bạn để lại comment bên dưới mình sẽ trả lời sớm nhất có thể.
  2. Cảm ơn các bạn đã đọc.

Nongdanit.info
[Cakephp] Bài 11 – Sử dụng session trong CakePHP