Ý kiến học viên

Nguyễn Xuân Bách

Nguyễn Xuân Bách

Chất lượng giảng dạy rất tốt, Giảng viên nhiệt tình hướng dẫn ch...
  • - Phone : 0976256106
  • - Email : bachnx92@gmail.com
  • - Facebook : Xem
Phạm Đức Nam

Phạm Đức Nam

Chất lượng giảng dạy rất tốt, giảng viên nhiệt tình chỉ bảo.
  • - Phone : 01658977882
  • - Email : phamducnamhd292@gmai.com
  • - Facebook : Xem
Bùi Quốc Đạt

Bùi Quốc Đạt

Website thiết kế đẹp dễ nhìn và sử dụng, thông tin chưa nhiều nhưng kh...
  • - Phone : 0964142565
  • - Email : bqdat.it@gmail.com
Viết đánh giá

Viết đánh giá

Về chất lượng đào tạo, website

Đánh giá của học viên

Ý kiến của học viên

Xem đánh giá của học viên về phpandmysql.net

Yii2 phần 7 - Modules trong yii2 framework

Khi trang web của chúng ta có nhiều modules, lúc này nếu để lẫn lộn tất cả các controller của từng module lại với nhau trong cùng một thư mục sẽ khiến ứng dụng bị rối, code không được tổ chức rõ ràng. Phần này chúng ta sẽ thao tác chia các controllers và views theo từng modules riêng, ví dụ như users, news, products... thành mỗi modules riêng.
Một modules trong yii2 framework bao gốm có controllers và views như một mô hình MVC bình thường, controllers sẽ chứa các controller và views chứa các file view theo từng controller.

1. Thao tác với module, tạo các modules

Ta tiến hành tạo folder modules trong folder frontend, ví dụ ở đây ta sẽ tạo ra module schedule, trong module schedule ta tạo 2 folder là controllers, views và file Schedule.php

- Tạo file modules\schedule\controllers\DefaultController.php và file modules\schedule\views\default\index.php

Modules trong yii2 framework

Sau đó thêm vào nội dung sau, file DefaultController.php
<?php

namespace app\modules\schedule\controllers;

use Yii;
use yii\web\Controller;

/*
 * Default controller
 * @author Ha Tuan Kiet <haanhdon@gmail.com>
 */

class DefaultController extends Controller
{
    public function actionIndex()
    {
        Yii::$app->view->title = 'Modules trong Yii2 Framework';
        
        return $this->render('index');
    }
}

File modules\schedule\views\default\index.php
<h3>Hello</h3>

<p>Module schedule - Yii2 Framework</p>


Mở file frontend\modules\schedule\Schedule.php lên ta thêm vào nội dung sau
<?php

//phpandmysql.net

namespace app\modules\schedule;

class Schedule extends \yii\base\Module
{
    public $controllerNamespace = 'app\modules\schedule\controllers';

    public function init()
    {
        parent::init();

        // custom initialization code goes here
    }
}


Ta đã tạo xong modules schedule, tuy nhiên lúc này ta chưa thể chạy được module này vì chưa khai báo nó trong file config\main.php


2. Khai báo modules


Trong file fronend\config\main.php ta thêm vào đoạn code khai báo module
'modules' => [
        'schedule' => [
            'class' => 'app\modules\schedule\Schedule',
        ],
    ],
Modules khai báo cùng cấp với components Chi tiết hơn bạn xem code dưới
return [
    'id' => 'app-frontend',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'frontend\controllers',
    'modules' => [
        'schedule' => [
            'class' => 'app\modules\schedule\Schedule',
        ],
    ],
    'components' => [
        'request' => [
            'baseUrl' => '/',
        ],

Oke, như vậy là đã xong một module, bạn có thể tạo thêm nhiều module mà bạn muốn, lúc này ta có thể chạy module schedule theo đường dẫn
http://yiiadvanced/schedule

Theo đúng thứ tự khi chạy một module sẽ là module -> controller -> action. Ở trong Yii2 framework thì DefaultController của một module sẽ chạy đầu tiên, và trong một controller thì actionIndex sẽ chạy đầu tiên.

Nếu viết đầy đủ ra thì để chạy module schedule và đến actionIndex của DefaultController thì url sẽ là
http://yiiadvanced/schedule/default/index

Đây là kết quả khi ta chạy module schedule.

Module schedule - Yii2 framework
Bạn vẫn chưa hiểu vấn đề, bạn cần người trợ giúp?. Hãy click vào đây để gửi câu hỏi, mọi người sẽ support cho bạn