/ / Codeigniter / Comments (3)

Controller và URLs trong CodeIgniter Framework

Ở bài trước chúng ta đã cùng nhau tìm hiểu tổng quan về CodeIgniter framework và chạy ứng dụng đầu tiên,nếu các bạn chưa xem bài trước thì hãy xem lại để sang bài này dễ tiếp cận hơn nhé, sang bài hôm nay chúng ta sẽ tìm hiểu kỹ hơn về Controller cũng như các phân đoạn trên link url của CodeIgniter nhé.

Tìm hiểu về CodeIgniter Framework URLs

– Mặc định các truy vấn đều gọi qua trang index.php

– Các phân đoạn trên 1 url có dạng:

example.com/class/function/ID

Trong đó thì:

  1. Phân đoạn đầu đại diện cho class (hay controller) được gọi lên
  2. Phân đoạn 2 đại diện cho phương thức trong class(hay action trong controller)
  3. Phân đoạn 3 trở đi đại diện cho các tham số của phương thức hoặc các biến gửi lên url

– Lấy các giá trị phân đoạn trên link url:
+ Để lấy giá trị các phân đoạn trên link url các bạn có thể sử dụng cú pháp:

$this->uri->segment('n');

Trong đó n chính là vị trí các phân đoạn trên link url
Ví dụ:

example.com/product/view/1

Với link trên ta sẽ lấy các giá trị của phân đoạn như sau:

echo $this->uri->segment('1'); //trả về product
echo $this->uri->segment('2'); //trả về view
echo $this->uri->segment('3'); //trả về 1

Như các bạn thấy thì phân đoạn thứ nhất trả về product,phân đoạn 2 trả về view và phân đoạn 3 trả về 1.Dựa vào các phân đoạn này các bạn hoàn toàn có thể gửi cũng như nhận dữ liệu 1 cách dễ dàng.
Chú ý:Trong trường hợp mà link url đã được rewrite thì các bạn lên sử dụng

$this->uri->rsegment('n');

để có thể lấy chính xác các phân đoạn theo ý muốn.

Bỏ file index.php trên link url

– Mặc định file index.php sẽ được hiển thị trên link url ,ví dụ:

example.com/index.php/user/login

Để có thể bỏ index.php trên link url ta tạo file .htaccess ngang hàng với file index.php với nội dung:

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

Lúc này đường link của chúng ta có thể viết lại dưới dạng:

example.com/user/login

Với đường link dạng này thì các bạn thấy phần đoạn thứ nhất trên link url chính là controller,phần đoạn 2 là tên phương thức(action),phân đoạn 3 (nếu có) sẽ là tham số trong phương thức

Tìm hiểu về CI Controller

– Đây chính là 1 phần trong mô hình MVC

– Quy tắc đặt tên controller và file controller:
+ Tên controller phải viết hoa ký tự đầu tiên
+ Tên file controller giống tên class và viết thường
Ví dụ:

<?php
class Test extends CI_Controller {
    //đây là 1 controller hợp lệ
}
?>
<?php
class test extends CI_Controller {
    //đây là 1 controller không hợp lệ,do tên controller viết thường chữ cái đầu
}
?>

Class Constructors: chúng ta có 1 chú ý đó là nếu trong controller các bạn xây dựng hàm khời tạo (__construct()) thì cần kế thừa lại hàm khởi tạo của CI_Controller
Ví dụ:

<?php
class Test extends CI_Controller {
       public function __construct()
       {
            parent::__construct();
            // Your own constructor code
       }
}
?>

– Như các đã thực hiện trong bài viết ứng dụng đầu tiên trong CodeIgniter thì các bạn thấy khi download thư viện CodeIgniter về chạy thì mặc định sẽ chạy controller Welcome,vậy giờ chúng ta muốn thay đổi controller chạy mặc đinh sẽ làm như sau:
+ Truy cập vào application/config/routes.php
+ Thay đổi biến:

$route['default_controller'] = ‘ten_controller';

Ví dụ: mặc định chạy controller index:

$route['default_controller'] = ‘index';

– Khi truy cập link :

example.com/user/login

lúc này chúng ta đang gọi tới controller (class) tên là user và phương thức là login,mặc định nếu không có phương thức được gọi ra thì nó sẽ chạy phương thức index() trong controller
– Ví dụ:
Tạo 1 controller có tên index.php với nội dung

if (!defined('BASEPATH')) exit('No direct script access allowed');
class Index extends CI_Controller {
    public function index()
    {
        echo ‘Bài học về Controller trong CodeIgniter tại hocphp.info';
    }
}
  • Dòng if ( ! defined(‘BASEPATH’)) exit(‘No direct script access allowed’); là dòng Security bảo vệ file của các bạn, nó không cho truy cập thẳng vào file mà phải thông qua file index.php ở mức ngoài cùng.
  • Tên controller là Index,và nó phải bắt đầu bằng chữ hoa
  • Phương thức (action) index() sẽ được chạy mặc định


Xem thêm video hướng dẫn



04/09/2014
Written by nobitacnt

Trong bài viết không tránh khỏi những câu từ chưa chính xác,mong nhận được sự góp ý để website hoàn thiện hơn.Nếu thấy bài viết có ích với bạn hãy like và share để ủng hộ nhé :D.

Bài viết chùng chuyên mục

3 Comments

  1. Tuan anh says:
     /  Reply

    Mình mới học CI. Bài viết của bạn rất hay và bổ ích, cảm ơn bạn

  2. Truyền Thông Vina says:
     /  Reply

    Bài viết của bạn thật sự rất dễ hiểu và chi tiết. Cám ơn bạn rất nhiều về bài viết này.

  3. dũng says:
     /  Reply

    anh ơi sao em thấy cai CodeIgniter Framework này em phải ao thư mục ở đâu trước khi làm ạ. nêu tao như phân anh hướng dẫn xong em chẳng tim ra code em đê ở trong đó à . vơi lại em dùng DW cs6 để viết con dùng appserv 2.5.10 co gi anh tư vấn giúp em ạ

Gửi bình luận

Giới thiệu

Mình tạo ra blog này với mong muốn chia sẻ và học hỏi kinh nghiệm trong quá trình thiết kế website. Website đang trong quá trình phát triển chân thành cảm ơn mọi sự góp ý của các bạn để làm cho website ngày càng hoàn thiên.

DMCA.com Protection Status
Theo dõi qua Email

Tổng hợp các bài viết về

Hoc php - CodeIgniter Framework - Laravel Framework - PHP va MYSQL