Yii - Moduli

Un modulo è un'entità che ha i propri modelli, visualizzazioni, controller e possibilmente altri moduli. È praticamente un'applicazione all'interno dell'applicazione.

Step 1 - Crea una cartella chiamata modulesall'interno della radice del progetto. All'interno della cartella dei moduli, crea una cartella denominatahello. Questa sarà la cartella di base per il nostro modulo Hello.

Step 2 - All'interno del hello cartella, crea un file Hello.php con il seguente codice.

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

Abbiamo appena creato una classe modulo. Dovrebbe trovarsi sotto il percorso di base del modulo. Ogni volta che si accede a un modulo, viene creata un'istanza della classe del modulo corrispondente. Ilinit() è per inizializzare le proprietà del modulo.

Step 3- Ora aggiungi altre due directory all'interno della cartella hello: controller e visualizzazioni. Aggiungere unCustomController.php file nella cartella del controller.

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

Quando si crea un modulo, una convenzione consiste nell'inserire le classi del controller nella directory del controller del percorso di base del modulo. Abbiamo appena definito il fileactionGreet funzione, che restituisce solo un file greet Visualizza.

Le viste nel modulo dovrebbero essere messe nella cartella delle viste del percorso di base del modulo. Se le viste vengono visualizzate da un controller, dovrebbero essere posizionate nella cartella corrispondente al filecontrollerID. Inseriscicustom cartella nel file views cartella.

Step 4 - All'interno della directory personalizzata, crea un file chiamato greet.php con il seguente codice.

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

Abbiamo appena creato un file View per noi actionGreet. Per utilizzare questo modulo appena creato, dobbiamo configurare l'applicazione. Dovremmo aggiungere il nostro modulo alla proprietà dei moduli dell'applicazione.

Step 5 - Modifica il file config/web.php file.

<?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;
?>

Un percorso per il controller di un modulo deve iniziare con l'ID modulo seguito dall'ID controller e dall'ID azione.

Step 6 - Per eseguire il file actionGreet nella nostra applicazione, dovremmo usare il seguente percorso.

hello/custom/greet

Dove hello è un ID modulo, custom è un file controller ID e salutare è un file action ID.

Step 7 - Ora digita http://localhost:8080/index.php?r=hello/custom/greet e vedrai il seguente output.

Punti importanti

I moduli dovrebbero:

  • Essere utilizzato in applicazioni di grandi dimensioni. Dovresti dividere le sue caratteristiche in diversi gruppi. Ogni gruppo di funzionalità può essere sviluppato come modulo.

  • Sii riutilizzabile. Alcune funzionalità di uso comune, come la gestione SEO o la gestione del blog, possono essere sviluppate come moduli, in modo da poterle riutilizzare facilmente in progetti futuri.