Yii - मॉड्यूल

एक मॉड्यूल एक इकाई है जिसके अपने मॉडल, विचार, नियंत्रक और संभवतः अन्य मॉड्यूल हैं। यह व्यावहारिक रूप से अनुप्रयोग के अंदर एक अनुप्रयोग है।

Step 1 - नामक एक फ़ोल्डर बनाएँ modulesअपने प्रोजेक्ट रूट के अंदर। मॉड्यूल फ़ोल्डर के अंदर, नाम का एक फ़ोल्डर बनाएंhello। यह हमारे हैलो मॉड्यूल के लिए मूल फ़ोल्डर होगा।

Step 2 - अंदर hello फ़ोल्डर, एक फ़ाइल बनाएँ Hello.php निम्नलिखित कोड के साथ।

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

हमने सिर्फ एक मॉड्यूल क्लास बनाया है। यह मॉड्यूल के आधार पथ के नीचे स्थित होना चाहिए। जब भी कोई मॉड्यूल एक्सेस किया जाता है, तो संवाददाता मॉड्यूल वर्ग का एक उदाहरण बनाया जाता है। init() फ़ंक्शन मॉड्यूल के गुणों को शुरू करने के लिए है।

Step 3- अब, हैलो फ़ोल्डर के अंदर दो और निर्देशिकाओं को जोड़ें - नियंत्रक और दृश्य। एक जोड़ें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। जोड़नाcustom फ़ोल्डर के लिए views फ़ोल्डर।

Step 4 - कस्टम निर्देशिका के अंदर, नामक एक फ़ाइल बनाएँ greet.php निम्नलिखित कोड के साथ।

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

हमने सिर्फ a बनाया है View हमारे लिए actionGreet। इस नए बनाए गए मॉड्यूल का उपयोग करने के लिए, हमें एप्लिकेशन को कॉन्फ़िगर करना चाहिए। हमें अपने मॉड्यूल को एप्लिकेशन की मॉड्यूल संपत्ति में जोड़ना चाहिए।

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

एक मॉड्यूल नियंत्रक के लिए एक मार्ग नियंत्रक आईडी और कार्रवाई आईडी के बाद मॉड्यूल आईडी से शुरू होना चाहिए।

Step 6 - चलाने के लिए actionGreet हमारे आवेदन में, हमें निम्नलिखित मार्ग का उपयोग करना चाहिए।

hello/custom/greet

जहां हैलो एक मॉड्यूल आईडी है, कस्टम एक है controller ID और अभिवादन एक है action ID

Step 7 - अब, टाइप करें http://localhost:8080/index.php?r=hello/custom/greet और आप निम्न आउटपुट देखेंगे।

महत्वपूर्ण बिंदु

मॉड्यूल चाहिए -

  • बड़े अनुप्रयोगों में उपयोग किया जाता है। आपको इसकी सुविधाओं को कई समूहों में विभाजित करना चाहिए। प्रत्येक सुविधा समूह को एक मॉड्यूल के रूप में विकसित किया जा सकता है।

  • पुन: प्रयोज्य हो। एसईओ प्रबंधन या ब्लॉग प्रबंधन के रूप में कुछ आमतौर पर उपयोग की जाने वाली विशेषताएं, मॉड्यूल के रूप में विकसित की जा सकती हैं, ताकि आप उन्हें भविष्य की परियोजनाओं में आसानी से उपयोग कर सकें।