CodeIgnitor: Controller

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Controller có thể được xem như trái tim của toàn bộ ứng dụng. Nó điều khiển các yêu cầu HTTP từ người dùng. Tất cả mọi xử lí do người dùng tuơng tác đều được xử lý tại controller. Controller sẽ làm nhiệm vụ giao tiếp giữa các yêu cầu người dùng (hay chính xác hơn đó là các yêu cầu HTTP) với ứng dụng cũng như với cơ sở dữ liệu.

Controller là 1 file class mà nó được đặt tên sao cho có mối liên hệ với URI. Ví dụ với URL sau:

example.com/blog

Với URL trên thì CI sẽ tìm và gọi controller blog.php và ta đặt tập tin controller này trong thư mục application/controllers/blog.php.

Chúng ta sẽ bt đu vi ng dng đu tiên "HELLO WORD!":

Chúng ta sẽ tạo một controller có tên là blog (blog.php) và lưu trong thư mục application/controllers/ với nội dung như sau:

<?php
class Blog extends CI_Controller {
    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        echo 'Hello World!';
    }
}
?>

Với controller được tạo ở trên, bạn sẽ gọi controller này với URL như sau:

example.com/blog

Lúc đó, kết quả mà chúng ta thấy sẽ là câu "Hello World!".

Các bn chú ý v cách to 1 controller:

- File controller phải được đặt tên trùng với tên controller (tên class) và được đặt trong thư mục application/controllers/ (hoặc thư mục con trong application/controllers/).

- Tên controller (chính xác hơn đó là tên của class) phải được viết hoa chữ cái đầu tiên như ví dụ mà bạn thấy (Blog) và controller phải được extends class CI_Controller.

- Mỗi controller luôn luôn có phương thức khởi tạo __construct() với câu lệnh bên trong như bạn thấy ở ví dụ trên:

function __construct()
{
    parent::__construct();
}

Bạn thấy với controller blog trên, ta chỉ cần truy cập URL example.com/blogCI sẽ tự động tìm đến controller blog để thực thi. Vậy tại sao CI hiểu là sẽ gọi tới phương thức index()?. Trả lời: Bởi vì với URL trên thì CI đã hiểu ngầm rằng bạn đang truy cập tới controller blog và đang gọi phương thức index() (Có thể xem phương thức index() là phương thức mà CI sẽ tự động hiểu nếu ta không truyền tên phương thức vào URL).

Chúng ta sẽ xét tiếp 1 ví dụ khác như sau:

<?php
class Blog extends CI_Controller {
    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        echo 'Hello World!';
    }

    function comments()
    {
        echo 'Look at this!';
    }
}
?>

Với ví dụ trên, nếu bạn muốn truy cập tới phương thức comments() để in ra câu "Look at this!" thì bạn sẽ truy cập URL sau:

example.com/blog/comments

Với URL trên, CI sẽ tự động tìm đến phương thức comments() của controller blog và thực thi khối lệnh bên trong phương thức đó, và kết quả là in ra câu "Look at this!".

Tiếp tục xét 1 ví dụ khác, ví dụ lần này ta sẽ truyền vào phương thức comments() biến $id, tức lúc này phương thức sẽ trở thành comments($id):

<?php
class Blog extends CI_Controller {
    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        echo 'Hello World!';
    }

    function comments($id)
    {
        echo 'Look at this! ID comment is '.$id;
    }
}
?>

Với ví dụ trên, bạn truy cập URL sau:

example.com/blog/comments/12

Lúc này, kết quả bạn sẽ thấy là:

Look at this! ID comment is 12

Theo mặc định, CI sẽ xử lý URL và gọi các controller (cũng như phương thức tương ứng) như ta đã thấy ở trên. Ngoài ra, CI còn cung cấp cho chúng ta một "công cụ" giúp cho chúng ta hoàn toàn tùy biến việc thiết kế URL, đó là routes. Về routes tôi sẽ hướng dẫn trong 1 phần khác được đề cập sau.

» Tiếp: Tên riêng
« Trước: URL
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!