tiendat3791
New Member
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.
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:
<?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.
[h=2]Gọi Controller[/h]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!".
[h=2]Truyền biến vào 1 Controller[/h]Để 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ịnhtrong 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:
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 : 3
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
<?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.
[h=2]Gọi Controller[/h]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!".
[h=2]Truyền biến vào 1 Controller[/h]Để 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ịnhtrong 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:
- http://localhost/codeigniter/index.php/hello/index/ kết quả sẽ là: Chào các bạn tôi là: năm nay tôi 0 tuổi. ( Vì thiếu giá trị ở đường dẫn nó sẽ lấy giá trị mặc định).
- http://localhost/codeigniter/index.php/hello/index/Tịnh/24 kết quả sẽ là: Chào các bạn tôi là: Tịnh năm nay tôi 24 tuổi
- http://localhost/codeigniter/index.php/hello/index//24 kết quả sẽ là Chào các bạn tôi là: năm nay tôi 24 tuổi
- 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
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 : 3