Phần trước ta đã tiến hành cấu hình url cho frontend và backend xong rồi, bài này ta sẽ tiến hành tạo và chạy controller đầu tiên trong ứng dụng web yii2 framework
Cũng như các framework khác, yii2 cũng chia làm 3 mục controllers, models, views. Controller nhận request từ người dùng sau đó xử lý, lấy dữ liệu từ database lên thông qua models, sau đó kết quả đổ ra views cho người dùng.

Trong Yii2 có một phần giúp ta có thể tạo controllers, models, views... hay mạnh hơn là nó có thể tạo ra một CRUD hoành chỉnh có đầy đủ chức năng list, add, edit và delete đó là Gii. Phần này tôi sẽ hướng dẫn các bạn vào một bài sau chi tiết hơn, ở đây ta sẽ thao tác tạo file đơn giản
1. Tạo file frontend\controllers\HelloController.php, Yii2 quy định tên controller chữ đầu tiên sẽ viết hoa và kèm theo từ Controller, từ Controller cũng phải viết hoa chữ C.
Trong đó
- Truyền title xuống view ta sử dụng cú pháp
- Gọi view trong controller ta sử dụng cú pháp sau
Cũng như các framework khác, Yii2 sử dụng mảng để truyền giá trị từ controller xuống view, ở phiên bản php 5.4 trở lên ta sẽ gặp khái niệm mảng là [] (hai dấu ngoặc vuông).
Ở trên ta đang truyền một biến hello có giá trị là 'Yii2 Franework - Hello world' xuống view
2. Tạo file frontend\views\hello\index.php để hiển thị kết quả từ controller, Ở đây controller của chúng ta là Hello nên trong folder Views chúng ta sẽ có folder hello tương ứng với controller nhé.
Trong file frontend\views\hello\index.php ta sẽ nhận giá trị biến truyền từ controller xuống, echo kết quả
Sau khi tạo xong, ta tiến hành chạy controller bằng url sau
Nếu như lúc đầu ta có thể chạy controller bằng http://localhost/yii2adv/frontend/web/hello thì sau khi ta cấu hình loại bỏ fronted/web và backend/web sẽ không chạy được bằng url này nữa. Để chạy được theo Url dạng này
Thì ta cần cấu hình trong file frontend\config\main.php một chút, ta thêm vào components nội dung sau
- Thêm baseUrl
- Thêm urlManager, cho showScriptName = false
Sau khi thêm nó sẽ như vậy
Lúc này ta có thể chạy theo cấu trúc domain/ten-controller
Và đây là kết quả hiển thị trên trình duyệt

Như vậy là chúng ta đã cấu hình và chạy ứng dụng đầu tiên trên Yii2 framework, tuy nhiên chúng ta cần chú ý một số điểm sau:
- Yii2 Framework bắt buộc chạy từ phiên bản php 5.4 trở lên
- Yii2 sử dụng mảng bằng đấu [] , và tất nhiên array vẫn sử dụng bình thường
- Yii2 hay sử dụng cấu trúc <?= $ten_bien ?> để xuất giá trị
Phần này chúng ta chưa tìm hiểu model, phần model thao tác với database tương đối rộng, ta sẽ tìm hiểu vào bài viết sau
Mô hình MVC trong Yii2 framework
Trong Yii2 có một phần giúp ta có thể tạo controllers, models, views... hay mạnh hơn là nó có thể tạo ra một CRUD hoành chỉnh có đầy đủ chức năng list, add, edit và delete đó là Gii. Phần này tôi sẽ hướng dẫn các bạn vào một bài sau chi tiết hơn, ở đây ta sẽ thao tác tạo file đơn giản
1. Tạo file frontend\controllers\HelloController.php, Yii2 quy định tên controller chữ đầu tiên sẽ viết hoa và kèm theo từ Controller, từ Controller cũng phải viết hoa chữ C.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <?php namespace frontend\controllers; use Yii; use yii\web\Controller; Class HelloController extends Controller { public function actionIndex() { Yii:: $app ->view->title = 'Yii2 Framework - Hello world' ; return $this ->render( 'index' , [ 'hello' => 'Yii2 Franework - Hello world' ]); } } |
Trong đó
- Yii2 sử dụng namespace, nôm na là cứ ở thư mục nào ta dùng namespace đúng đường dẫn đến thư mục đó
- Khái niệm use cũng giống như include file
- Tên class phải viết giống như tên file
- Các class ta viết ra được kế thừa từ class Controller của yii2
- Một acction trong Yii2 được bắt đầu từ action sau đó là tên action, chữ cái đầu viết hoa, ở đây ta đang có actionIndex()
- Truyền title xuống view ta sử dụng cú pháp
1
| Yii:: $app ->view->title = 'Tiêu đề' ; |
- Gọi view trong controller ta sử dụng cú pháp sau
1
| return $this ->render( 'index' ); //nhập đường dẫn file view muốn gọi |
Cũng như các framework khác, Yii2 sử dụng mảng để truyền giá trị từ controller xuống view, ở phiên bản php 5.4 trở lên ta sẽ gặp khái niệm mảng là [] (hai dấu ngoặc vuông).
Ở trên ta đang truyền một biến hello có giá trị là 'Yii2 Franework - Hello world' xuống view
1
| return $this ->render( 'index' ,[ 'hello' => 'Yii2 Franework - Hello world' ]); |
2. Tạo file frontend\views\hello\index.php để hiển thị kết quả từ controller, Ở đây controller của chúng ta là Hello nên trong folder Views chúng ta sẽ có folder hello tương ứng với controller nhé.
Trong file frontend\views\hello\index.php ta sẽ nhận giá trị biến truyền từ controller xuống, echo kết quả
1
| <h3><?= $hello ?></h3> |
Sau khi tạo xong, ta tiến hành chạy controller bằng url sau
1
| http: //yiiadvanced/?r=hello |
Nếu như lúc đầu ta có thể chạy controller bằng http://localhost/yii2adv/frontend/web/hello thì sau khi ta cấu hình loại bỏ fronted/web và backend/web sẽ không chạy được bằng url này nữa. Để chạy được theo Url dạng này
1
| http: //yiiadvanced/hello |
Thì ta cần cấu hình trong file frontend\config\main.php một chút, ta thêm vào components nội dung sau
- Thêm baseUrl
1
2
3
| 'request' => [ 'baseUrl' => '/' , ], |
- Thêm urlManager, cho showScriptName = false
1
2
3
4
5
6
| 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ], |
Sau khi thêm nó sẽ như vậy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| 'components' => [ 'request' => [ 'baseUrl' => '/' , ], 'user' => [ 'identityClass' => 'common\models\User' , 'enableAutoLogin' => true, ], 'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'class' => 'yii\log\FileTarget' , 'levels' => [ 'error' , 'warning' ], ], ], ], 'errorHandler' => [ 'errorAction' => 'site/error' , ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ], ], |
Lúc này ta có thể chạy theo cấu trúc domain/ten-controller
1
| http: //yiiadvanced/hello |
Và đây là kết quả hiển thị trên trình duyệt
Như vậy là chúng ta đã cấu hình và chạy ứng dụng đầu tiên trên Yii2 framework, tuy nhiên chúng ta cần chú ý một số điểm sau:
- Yii2 Framework bắt buộc chạy từ phiên bản php 5.4 trở lên
- Yii2 sử dụng mảng bằng đấu [] , và tất nhiên array vẫn sử dụng bình thường
- Yii2 hay sử dụng cấu trúc <?= $ten_bien ?> để xuất giá trị
Phần này chúng ta chưa tìm hiểu model, phần model thao tác với database tương đối rộng, ta sẽ tìm hiểu vào bài viết sau
EmoticonEmoticon