Учебники

Yii — Модули

Модуль — это объект, который имеет свои собственные модели, представления, контроллеры и, возможно, другие модули. Это практически приложение внутри приложения.

Шаг 1 — Создайте папку с именем modules внутри корня вашего проекта. Внутри папки модулей создайте папку с именем 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 — контроллеры и представления. Добавьте файл CustomController.php в папку контроллера.

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

При создании модуля принято помещать классы контроллера в каталог контроллера базового пути модуля. Мы только что определили функцию actionGreet , которая просто возвращает приветствие .

Представления в модуле должны быть помещены в папку представлений базового пути модуля. Если представления отображаются контроллером, они должны находиться в папке, соответствующей controllerID . Добавить пользовательскую папку в папку представлений.

Шаг 4 — Внутри пользовательского каталога создайте файл с именем 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' environment
      $config['bootstrap'][] = 'debug';
      $config['modules']['debug'] = [
         'class' => 'yii\debug\Module',
      ];
      $config['bootstrap'][] = 'gii';
      $config['modules']['gii'] = [
         'class' => 'yii\gii\Module',
      ];
   }
   return $config;
?>

Маршрут для контроллера модуля должен начинаться с идентификатора модуля, за которым следуют идентификатор контроллера и идентификатор действия.

Шаг 6 — Чтобы запустить actionGreet в нашем приложении, мы должны использовать следующий маршрут.

hello/custom/greet

Где hello — это идентификатор модуля, custom — это идентификатор контроллера, а greet — идентификатор действия .

Шаг 7. Теперь введите http: // localhost: 8080 / index.php? R = hello / custom / greet, и вы увидите следующий вывод.

Пользовательский модуль

Важные моменты

Модули должны —

Быть использованным в больших заявлениях. Вы должны разделить его функции на несколько групп. Каждая группа функций может быть разработана как модуль.

Быть многоразовым Некоторые часто используемые функции, такие как SEO-управление или управление блогами, могут быть разработаны как модули, чтобы вы могли легко использовать их в будущих проектах.