Ở 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é.
– 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ì:
– 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:
1
|
$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:
1
2
3
|
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
1
|
$this ->uri->rsegment( 'n' ); |
để có thể lấy chính xác các phân đoạn theo ý muốn.
– 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:
1
2
3
4
5
|
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
– Đâ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ụ:
1
2
3
4
5
|
<?php class Test extends CI_Controller { //đây là 1 controller hợp lệ } ?> |
1
2
3
4
5
|
<?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ụ:
1
2
3
4
5
6
7
8
9
|
<?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:
1
|
$route [ 'default_controller' ] = ‘ten_controller'; |
Ví dụ: mặc định chạy controller index:
1
|
$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
1
2
3
4
5
6
7
|
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'; } } |
» Tin mới nhất:
» Các tin khác: