Thời gian đọc: 5 phút
Trong CodeIgniter 3, Controller là thành phần trung tâm trong mô hình MVC (Model-View-Controller) chịu trách nhiệm xử lý yêu cầu từ người dùng, tương tác với các mô hình dữ liệu (Models), và gửi dữ liệu đến view để hiển thị.
Dưới đây là hướng dẫn chi tiết về cách tạo và sử dụng Controller trong CodeIgniter 3:
Để tạo một Controller mới trong CodeIgniter 3:
application/controllers
..php
. Ví dụ: Welcome.php
.Welcome.php
sẽ có lớp Welcome
.CI_Controller
.Ví dụ về Controller cơ bản:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index() {
// Đây là phương thức mặc định được gọi khi không chỉ định phương thức
echo "Hello, CodeIgniter!";
}
}
Trong Controller, bạn có thể định nghĩa các phương thức (method) để xử lý các yêu cầu khác nhau. Mỗi phương thức có thể được truy cập qua URL tương ứng.
Ví dụ:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Blog extends CI_Controller {
public function index() {
echo "Đây là trang blog!";
}
public function post($id) {
echo "Xem bài viết có ID: " . $id;
}
}
Với Controller trên:
http://yourdomain.com/index.php/blog
sẽ gọi phương thức index()
.http://yourdomain.com/index.php/blog/post/1
sẽ gọi phương thức post()
với tham số $id
là 1.Controller có thể nạp Model để làm việc với dữ liệu và View để hiển thị kết quả.
Nạp Model:
public function __construct() {
parent::__construct();
// Nạp model tên là 'Post_model'
$this->load->model('Post_model');
}
Sử dụng Model:
public function get_post($id) {
// Gọi phương thức 'get_post' của 'Post_model' để lấy dữ liệu
$post = $this->Post_model->get_post($id);
print_r($post);
}
Nạp và Sử dụng View:
public function view_post($id) {
$data['post'] = $this->Post_model->get_post($id);
// Nạp view 'post_view' và truyền dữ liệu tới view
$this->load->view('post_view', $data);
}
Dữ liệu được truyền từ Controller sang View dưới dạng một mảng:
public function show_data() {
$data['title'] = 'Trang chủ';
$data['content'] = 'Chào mừng đến với CodeIgniter 3!';
$this->load->view('home_view', $data);
}
Trong View home_view.php
, bạn có thể sử dụng biến $title
và $content
như sau:
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
<p><?php echo $content; ?></p>
</body>
</html>
CodeIgniter cung cấp rất nhiều thư viện và trợ lý sẵn có để tăng tốc phát triển ứng dụng.
Nạp thư viện:
$this->load->library('session');
Sử dụng thư viện:
$this->session->set_userdata('username', 'john');
Nạp trợ lý:
$this->load->helper('url');
Sử dụng trợ lý:
echo base_url('welcome');
Khi làm việc với dữ liệu đầu vào từ người dùng, luôn sử dụng các hàm của CodeIgniter để đảm bảo tính bảo mật.
Ví dụ, để lấy dữ liệu từ URL một cách an toàn, sử dụng:
$id = $this->input->get('id', TRUE); // TRUE để bật tính năng xss_clean
Redirect:
Sử dụng redirect()
để chuyển hướng người dùng:
redirect('welcome/index');
Flashdata:
Flashdata là dữ liệu chỉ tồn tại cho đến lần yêu cầu kế tiếp. Sử dụng để hiển thị thông báo:
$this->session->set_flashdata('message', 'Đăng nhập thành công!');
redirect('dashboard');
Trong View:
echo $this->session->flashdata('message');
Controller trong CodeIgniter 3 rất linh hoạt và dễ sử dụng. Nắm vững cách tạo và sử dụng chúng sẽ giúp bạn xây dựng các ứng dụng web một cách hiệu quả và dễ dàng.