Chuyên thiet ke website ban hang da cap cực mạnh - . máy bơm định lượng hóa chất máy bơm nước
  1. RULE CỦA DIỄN ĐÀN: Bất cứ ai post bài sai chuyên mục đều banner, xóa tất cả các bài viết, xóa tất cả các account cùng ip .

CodeIgniter 4- Controller trong CodeIgniter

Discussion in 'Rao vặt thiết kế website' started by tiendat3791, Dec 15, 2016.

  1. tiendat3791

    tiendat3791 New Member

    Joined:
    Nov 25, 2016
    Messages:
    26
    Likes Received:
    0
    Trong bài viết trước bạn và Công ty thiết kế website OTVINA đã tìm hiểu về cấu trúc thư mục và chương trình đầu tiên trong Codeigniter, trong bài viết này chúng ta sẽ tiếp tục tìm hiểu chi tiết hơn về Controller trong CodeIgniter.

    [​IMG]
    Học Codeigniter- Controller trong PHP
    Nếu học tới CodeIgniter chắc hẳn bạn đã biết về mô hình MVC trong PHP, trong CI phần Controller cũng tương tự được sử dụng để xử lý dữ liệu và điều khiển cho toàn bộ ứng dụng web khi thiết kế website.

    Nội dung bài viết hôm nay sẽ bao gồm:

    • Cách tạo Controller trong CodeIgniter
    • Truyền biến trong Controller như thế nào?
    • Cấu hình Controller mặc định
    • ... và 1 số nội dung liên quan trong Controller của CodeIgniter
    Tạo Controller mới cho CodeIgniter
    Toàn bộ controller trong CodeIgniter được đặt trong thư mục application/controller, mặc định bạn sẽ thấy 1 file welcome.php bên trong thư mục controller, tương tự như bài trước chúng ta sẽ tạo 1 file bên trong là hello.php và nhập vào nội dung bên dưới:

    <?php
    if (!defined('BASEPATH'))
    exit('No direct script access allowed');
    class Hello extends CI_Controller{
    public function index(){
    echo "Bài 3- Controller trong CodeIgniter";
    }
    public function goodbye(){
    echo "Tạm biệt bạn, hẹn gặp bạn ở bài tiếp theo!";
    }
    }
    ?>
    Dòng if(!defined('BASEPATH')) exit('No direct script access allowed'); nghĩa là không cho phép truy cập trực tiếp vào file mà phải chạy qua index.php, nó giúp cho file của bạn bảo mật hơn.

    Tiếp theo là tên lớp "Hello", trong CI bạn phải đặt tên lớp trùng với tên file của nó nhưng phải viết hoa chữ cái đầu tiên và tất cả các controller phải kế thừ từ controller CI_Controller, đây là controller do CI xây dựng sẵn, nếu không extends nó chúng ta không thể sử dụng các thư viện có sẵn của CI.

    Phương thức index() là phương thức mặc định được gọi của CodeIgniter, nghĩa là khi bạn gọi tới class nó sẽ tự động gọi phương thức này.

    Gọi Controller
    Như bài viết trước đã tìm hiểu, để gọi tới controller bạn vào trình duyệt gõ địa chỉ: http://localhost/duongdan/index.php/tencontroller/tenphuongthuc/

    Đối với trường hợp trên, chúng ta gọi như sau: http://localhost/codeigniter/index.php/hello/index/ . Tuy nhiên bạn hoàn toàn có thể bỏ phần /index/ ở sau cùng đường dẫn bạn hoàn toàn có thể bỏ đi vì controller mặc định sẽ tự gọi phương thức index() nếu không tồn tại nó trên thanh địa chỉ.

    Tuy nhiên nếu bạn muốn chạy phương thức goodbye() bạn phải gõ đầy đủ đường dẫn: http://localhost/codeigniter/index.php/hello/goodbye/ kết quả in ra màn hình sẽ là:"Tạm biệt, hẹn gặp bạn ở bài tiếp theo!".

    Truyền biến vào 1 Controller
    Để truyền biến trên COdeigniter bạn chỉ cần truyền vào địa chỉ theo cấu trúc sau: http://localhost/duongdan/index.php/tencontroller/tenphuongthuc/bien1/bien2/bien3/. Nghĩa là giá trị các biến sẽ được đặt sau phương thức, như vậy chúng ta hoàn toàn có thể lấy được giá trị từ phương thức GET, để nhận được biến chúng ta sẽ truyền các biến vào khi tạo phương thức.

    Ví dụ:

    <?php
    if(!defined('BASEPATH')) exit('Không cho phép truy cập trực tiếp');
    class Hello extends CI_Controller{
    public function index($hoten=''){
    echo "Xin chào bạn ".$hoten;
    }
    }
    ?>
    Vậy nếu khi gọi chúng ta gõ: http://localhost/codeigniter/index.php/hello/index/Tịnh

    Thì kết quả trên màn hình của chúng ta sẽ là

    Xin chào bạn Tịnh
    trong trường hợp muốn truyền vào nhiều biến bạn chỉ cần viết tiếp ra sau giá trị các biến khác, và nhớ khởi tạo biến khi bạn tạo phương thức.

    Lưu ý: Khi tạo ra phương thức( function) nếu truyền biến vào bạn phải gán giá trị mặc định cho nó, vì trường hợp nếu người dùng truy cập http://localhost/codeigniter/index.php/hello/index/ thì CI sẽ không xác định được biến $hoten và như vậy chúng ta sẽ gặp phải lỗi.

    Ví dụ 2:

    <?php
    if(!defined('BASEPATH')) exit('Không cho phép truy cập trực tiếp');
    class Hello extends CI_Controller{
    public function index($hoten='',$tuoi=0){
    echo "Chào các bạn tôi là: ".$hoten. " năm nay tôi ".$tuoi." tuổi";
    }
    }
    Vậy nếu chúng ta chạy:

    Cấu hình Controller mặc định
    Mặc định khi bạn không gọi controller nào thì Codeigniter sẽ chạy vào controller welcome( cái file welcome.php ban đầu có), vì vậy nếu bạn muốn mặc định khi chạy vào địa chỉ http://localhost/codeigniter/index.php mà nó gọi ngay vào controller hello.php ( hoặc controller khác mà bạn muốn) thì bạn làm như sau:

    • Mở file application/config/routes.php
    • Tìm dòng $route['default_controller'] = “welcome”; sau đó sửa welcome thành controller bạn muốn đặt làm mặc định.
    • Sau đó bạn chỉ việc chạy http://localhost/codeigniter/ để gọi ra controller đó <3
    Hàm khởi tạo
    Mặc định trong PHP khi làm với hướng đối tượng thì hàm khởi tạo sẽ đặt trùng tên với tên lớp hoặc đặt là __construct(). Nếu trong Controller bạn muốn sử dụng hàm khởi tạo thì bắt buộc bạn phải gọi đến hàm khởi tạo của cha nó (CI_Controller), vì PHP nếu hàm con kế thừa hàm cha mà hàm con có hàm khởi tạo thì nó sẽ chạy hàm khởi tạo của con chứ không chạy hàm khởi tạo của cha, mà trong hàm khởi tạo của cha lại chứa những đoạn code thiết lập hệ thống cho CI nên bắt buộc phải chạy nó.

    class Hello extends CI_Controller
    {
    function __construct() {
    // Gọi đến hàm khởi tạo của cha
    parent::__construct();
    }
    public function index()
    {
    echo 'Hello from Vũ Công Tịnh';
    }
    }
    Vậy là trong bài này chúng ta đã tìm hiểu những kiến thức chính để có thể bắt đầu với Controller trong CodeIgniter, hy vọng bài viết sẽ hữu ích với bạn, đừng quên like và share để động viên OTVINA nhé các bạn <3

    Nguồn : CodeIgniter 4- Controller trong CodeIgniter
     

Share This Page