Hướng dẫn codeigniter – Ở bài trước mình đã hướng dẫn các config cơ bản để có thể chạy app. Bạn đã config Home làm controller mặc định khi tạo app vậy thì. Bạn phải tạo controller tên là Home chứ đúng không?
#1 Controller
Trong folder application\controllers bạn tạo mới 1 file php đặt tên là home.php nội dung của nó gồm những gì
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Home extends CI_Controller { function __construct() { parent::__construct(); } }
Rồi bạn chạy thử app của mình xem có gì? Lỗi đúng không. Mặc định khi vào controller nào đó thì CI sẽ chọn index làm phương thức mặc định để trỏ tới. Do đó ta sẽ tạo 1 phương thức tên là index và view cũng tên như vậy. Cho dễ quản lý ha. Còn về nguyên tắc 1 phương thức return về view nào cũng được hết á 🙂
Trong controller mình thêm phương thức index có nội dung như sau:
function index() { $this->load->view('/Home/index'); }
Chúng ta sẽ đến phần view
#2 View
<h1>Xin chào đây là view Index được gọi từ controller Home</h1>
#3 Model
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Users_model extends CI_Model { public function __construct() { $this->load->database(); } public function get_all() { $query = $this->db->query('SELECT * FROM users'); return $query->result(); } }
Như đã đề cập ở bài trước. Nếu bạn load library dabase ngay ở autoload.php thì bạn khỏi cần phải load thủ công ở từng Model. Mà do mình chưa load ở đó nên vào trong Model mình phải load trong function Constructor để connect database chứ không lại có lỗi thì ngại lắm :D.
Viết tiếp function get_all() để lấy toàn bộ user ra. Và trong function Index mình sẽ gọi function này để lấy toàn bộ dữ liệu đưa xuống view hiển thị thành Danh sách user.
Trong CodeIgniter (mình viết tắt là CI nhé) thì có rất nhiều cách để viết 1 câu query. Nhưng cách trên là nhanh nhất đối với mình 😀
Vậy là xong chưa? Chạy được chưa? Tất nhiên là chưa rồi ^^
Trong Home controller bạn sửa lại vài chỗ
Trong function Constructor của controller Home bạn phải load Model Users để sử dụng được các phương thức của model đó.
function __construct() { parent::__construct(); // Load all need model $this->load->model('users_model'); }
Tron function index của Controller bạn viết thêm
function index() { $data['list_users'] = $this->users_model->get_all(); $this->load->view('/Home/index',$data); }
Trong View bạn cũng sửa lại để render là được data gửi từ controller xuống
<h1>Đây là page Index được gọi từ controller Home</h1> <table> <tr> <th>Tên đăng nhập</th> <th>Active</th> <th>Role Id</th> </tr> <?php foreach ($list_users as $row) { ?> <tr> <td><?php echo $row->Username; ?></td> <td><?php echo $row->IsActive; ?></td> <td><?php echo $row->RoleId; ?></td> </tr> <?php } ?> </table>
Xong ! Bạn hãy chạy thử chương trình.