Yii 模块

Yii 模块

模块是一个拥有自己的模型、视图、控制器和可能其他模块的实体。它实际上是应用程序中的应用程序。

步骤1 - 在项目根目录下创建一个名为 模块 的文件夹。在模块文件夹中,创建一个名为 hello 的文件夹。这将是我们Hello模块的基本文件夹。

步骤2 - 在 hello 文件夹中,创建一个名为 Hello.php 的文件,其中包含以下代码。

<?php
   namespace app\modules\hello;
   class Hello extends \yii\base\Module {
      public function init() {
         parent::init();
      }
   }
?>

我们刚刚创建了一个模块类。它应该位于模块的基本路径下。每次访问一个模块时,都会创建相应的模块类的实例。init()函数用于初始化模块的属性。

步骤3 - 现在,在hello文件夹中添加两个更多的目录 – controllers和views。在控制器文件夹中添加一个CustomController.php的文件。

<?php
   namespace app\modules\hello\controllers;
   use yii\web\Controller;
   class CustomController extends Controller {
      public function actionGreet() {
         return $this->render('greet');
      }
   }
?>

创建模块时的惯例是将控制器类放在模块基本路径的控制器目录中。我们刚刚定义了 actionGreet 函数,它只是返回一个 greet 视图。

模块中的视图应该放在模块基本路径的视图文件夹中。如果视图由控制器渲染,它们应该位于与 controllerID 对应的文件夹中。在 views 文件夹中添加 custom 文件夹。

步骤4 - 在custom目录中,创建一个名为 greet.php 的文件,其中包含以下代码。

<h1>Hello world from custom module!</h1>

我们刚刚为我们的 actionGreet 创建了一个 视图 。要使用这个新创建的模块,我们应该配置应用程序。我们应该将我们的模块添加到应用程序的 modules 属性中。

步骤5 − 修改 config/web.php 文件。

<?php
   params = require(__DIR__ . '/params.php');config = [
      'id' => 'basic',
      'basePath' => dirname(__DIR__),
      'bootstrap' => ['log'],
      'components' => [
         'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is
               //required by cookie validation
            'cookieValidationKey' => 'ymoaYrebZHa8gURuolioHGlK8fLXCKjO',
         ],
         'cache' => [
            'class' => 'yii\caching\FileCache',
         ],
         'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
         ],
         'errorHandler' => [
            'errorAction' => 'site/error',
         ],
         'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
         ],
         'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
               [
                  'class' => 'yii\log\FileTarget',
                  'levels' => ['error', 'warning'],
               ],
            ],
         ],
         'db' => require(__DIR__ . '/db.php'),
      ],
      'modules' => [
         'hello' => [
            'class' => 'app\modules\hello\Hello', 
         ],
      ],
      'params' => params,
   ];
   if (YII_ENV_DEV) {
      // configuration adjustments for 'dev' environmentconfig['bootstrap'][] = 'debug';
      config['modules']['debug'] = [
         'class' => 'yii\debug\Module',
      ];config['bootstrap'][] = 'gii';
      config['modules']['gii'] = [
         'class' => 'yii\gii\Module',
      ];
   }
   returnconfig;
?>

一个模块控制器的路由必须从模块ID开始,后跟控制器ID和动作ID。

步骤6 - 要在我们的应用程序中运行 actionGreet ,我们应该使用以下路由。

hello/custom/greet

其中hello是一个模块ID,custom是一个控制器ID,greet是一个动作ID。 第7步 - 现在,输入 http://localhost:8080/index.php?r=hello/custom/greet ,您将看到以下输出。
Yii 模块

重要要点

模块应该 −

  • 在大型应用程序中使用。您应将其功能划分为几个组。每个功能组可以作为一个模块开发。

  • 可重用。一些常用功能,如SEO管理或博客管理,可以作为模块开发,以便您可以在将来的项目中轻松重用它们。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程