Yii - नियंत्रकों का उपयोग करना
वेब अनुप्रयोगों में नियंत्रकों से विस्तार होना चाहिए yii\web\Controllerया उसके बच्चे कक्षाएं। कंसोल अनुप्रयोगों में, उन्हें yii \ कंसोल \ नियंत्रक या उसके बच्चे वर्गों से विस्तारित होना चाहिए।
आइए हम एक उदाहरण नियंत्रक बनाते हैं controllers फ़ोल्डर।
Step 1 - अंदर Controllers फ़ोल्डर, नामक एक फ़ाइल बनाएँ ExampleController.php निम्नलिखित कोड के साथ।
<?php
namespace app\controllers;
use yii\web\Controller;
class ExampleController extends Controller {
public function actionIndex() {
$message = "index action of the ExampleController"; return $this->render("example",[
'message' => $message
]);
}
}
?>
Step 2 - में एक उदाहरण दृश्य बनाएँ views/exampleफ़ोल्डर। उस फ़ोल्डर के अंदर, नामक एक फाइल बनाएंexample.php निम्नलिखित कोड के साथ।
<?php
echo $message;
?>
प्रत्येक एप्लिकेशन में एक डिफ़ॉल्ट नियंत्रक होता है। वेब अनुप्रयोगों के लिए, साइट नियंत्रक है, जबकि कंसोल अनुप्रयोगों के लिए यह मदद करता है। इसलिए, जबhttp://localhost:8080/index.phpURL खोला गया है, साइट नियंत्रक अनुरोध को संभाल लेगा। आप एप्लिकेशन कॉन्फ़िगरेशन में डिफ़ॉल्ट नियंत्रक बदल सकते हैं।
दिए गए कोड पर विचार करें -
'defaultRoute' => 'main'
Step 3 - उपरोक्त कोड को निम्नलिखित में जोड़ें 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'),
],
//changing the default controller
'defaultRoute' => 'example',
'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 4 - टाइप करें http://localhost:8080/index.php वेब ब्राउज़र के एड्रेस बार में, आप देखेंगे कि डिफ़ॉल्ट नियंत्रक उदाहरण नियंत्रक है।
Note - नियंत्रक आईडी में कम अंक, अंक, आगे की स्लैश, हाइफ़न, और अंडरस्कोर में अंग्रेजी अक्षर होने चाहिए।
कंट्रोलर आईडी को कंट्रोलर क्लास के नाम में बदलने के लिए, आपको निम्न कार्य करना चाहिए -
- हाइफ़न द्वारा अलग किए गए सभी शब्दों में से पहला अक्षर लें और इसे अपरकेस में बदल दें।
- हाइफ़न निकालें।
- पिछड़े लोगों के साथ आगे की स्लैश बदलें।
- नियंत्रक प्रत्यय जोड़ें।
- नियंत्रक नाम स्थान को प्राथमिकता दें।
उदाहरण
पेज बन जाता है app\controllers\PageController।
लेख के बाद का हो जाता है app\controllers\PostArticleController।
उपयोगकर्ता / पोस्ट-लेख बन जाता है app\controllers\user\PostArticleController।
userBlogs / पोस्ट-लेख बन जाता है app\controllers\userBlogs\PostArticleController।