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

Thao tác với controller trong Yii2 Framework, chạy ứng dụng đầu tiên Hello World 1. Giới thiệu mô hình MVC trong Yii2 framework Yii sử dụng mô hình MVC (Model-View-Controller: Vốn được sử dụng trong việc xây dựng các ứng dụng Client-Server nói chung) trong việc thiết kế kiến trúc cơ bản. MVC hướng tới việc phân chia các logic đặc thù trong việc giao tiếp với người dùng. Mô hình MVC của Yii2 framework bao gồm Controller, Models và Views

Controller nhận request từ user sau đó xử lý, lấy dữ liệu từ database thông qua models, và ouput ra views. Trong frontend và backend Yii2 đều chia ra làm 3 thư mục chính là Controllers, Models và Views.

Bên cạnh việc tận dụng mô hình MVC, Yii cũng giới thiệu đối tượng front-controller, gọi là Application. Application thu thập dữ liệu từ request của người dùng và đưa tới controller phù hợp để xử lý.
Basic Workflow Luồng xử lý căn bản của Yii khi nhận request từ phía user (Request ở đây có thể là từ URL, từ Form,...)

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

Tạo file frontend\controllers\HelloController.php 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. Nội dung input:

<?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 thì dùng namespace đúng đường dẫn đến thư mục đó • Tên class giống như tên file • Các class đượ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 VD actionIndex()

  • Truyền title xuống view theo 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 Framework - Hello world' xuống view

return $this->render('index',['hello' => 'Yii2 Framework - Hello world']);

3. Khởi tạo view Tạo view để nhận dữ liệu theo các step sau:

  1. Tạo file frontend\views\hello\index.php Để hiển thị kết quả từ controller (hello), trong folder Views tạo folder tương ứng với controller. 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, run controller bằng url sau

http://yii2advanced.local/hello

  1. Cấu hình file frontend\config\main.php thêm vào components nội dung sau:
  • Thêm baseUrl
'request' => [
            'baseUrl' => '/',
        ],
  • Thêm urlManager, showScriptName = false
'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
            ],
        ],
  • File frontend\config\main.php
'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. Run controller trong Yii2 framework

Sau khi cấu hình xong, run theo cấu trúc domain.com/ten-controller

http://yii2advanced.local/hello

Hiển thị trên browser

Một số chú ý:

  • Yii2 Framework chạy trên phiên bản php 5.4 trở lên
  • Yii2 sử dụng mảng bằng dấu []
  • Yii2 hay sử dụng cấu trúc để output giá trị