Chạy ứng dụng đầu tiên trong Yii2 framework, Yii2 hello world

Thao tác với controller trong Yii2 Framework, cách chạy ứng dụng đầu tiên Hello World trong Yii2 framework. Phần này ta sẽ tìm hiểu cách chạy một controller trong Yii2 Framework sẽ như thế nào.
Ở phần trước bạn đã được tìm hiểu cách cấu hình và loại bỏ frontend/web trên url của Yii2 framework như thế nào rồi. Nếu bạn chưa biết thì có thể xem lại tại đây.

1. Mô hình MVC trong Yii2 framework



Trước hết ta cần xem qua mô hình MVC của Yii2 framework, cũng như các framework khác Yii2 có mô hình MVC bao gồm Controller, Models và Views như sau

Mô hình MVC trong Yii2 framework

Hình 1. Mô hình MVC trong Yii2 framework

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. Nhìn vào hình 1 ta thấy được trong frontend và backend Yii2 đều chia ra làm 3 thư mục chính là Controllers, Models và Views.


2. Khởi tạo một controller



Để chạy được một ứng dụng trong Yii2 framework ta cần phải có tối thiểu là controller, model làm việc với database nếu chưa thao tác với database thì sẽ không cần đến model lúc này

2.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. Nhập vào nội dung như sau

<?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 framework sử dụng namespace, file ở 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, required file trong php
  • 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

Yii::$app->view->title = 'Tiêu đề';

- Gọi view trong controller ta sử dụng cú pháp sau

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
 
return $this->render('index',['hello' => 'Yii2 Franework - Hello world']);


3. Khởi tạo một view



Ở trên ta đã thấy cách truyền tiêu đề trang web, cách truyền biến từ controller xuống view rồi. Bây giờ ta sẽ tạo view để nhận dữ liệu

3.1. 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ả

<?= $hello ?>


Sau khi tạo xong, ta tiến hành chạy controller bằng url sau

- Url controller hello : http://yii2advanced.local/?r=hello
- Hoặc theo : http://yii2advanced.local/frontend/web/hello

Nhưng vì ở bài trước mình đã cấu hình loại bỏ frontend/web rồi nên không chạy được như vậy nữa, giờ ta sẽ cấu hình sao cho đẹp và ngắn gọn hơn thành

http://yii2advanced.local/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

'request' => [
            'baseUrl' => '/',
        ],

- Thêm urlManager, cho showScriptName = false

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
            ],
        ],

- File frontend\config\main.php sẽ như sau

'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' => [
            ],
        ],
    ],



4. Chạy một controller trong Yii2 framework



Sau khi cấu hình một chút cho file frontend\config\main.php Lúc này ta có thể chạy theo cấu trúc domain.com/ten-controller

http://yii2advanced.local/hello

Và đây là kết quả hiển thị trên trình duyệt
Cấu hình Yii2 thành công
Cấu hình url theo dạng domain/ten-controller
 

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 để xuất giá trị