Yii - क्रियाओं का उपयोग करना

एक नियंत्रक वर्ग में एक कार्रवाई बनाने के लिए, आपको एक सार्वजनिक विधि को परिभाषित करना चाहिए जिसका नाम शब्द कार्रवाई से शुरू होता है। किसी क्रिया का रिटर्न डेटा अंतिम उपयोगकर्ता को भेजे जाने वाले प्रतिक्रिया का प्रतिनिधित्व करता है।

Step 1 - हम अपने में हैलो-वर्ल्ड एक्शन को परिभाषित करें ExampleController

<?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 
         ]); 
      } 
      public function actionHelloWorld() { 
         return "Hello world!"; 
      } 
   } 
?>

Step 2 - टाइप करें http://localhost:8080/index.php?r=example/hello-worldवेब ब्राउजर के एड्रेस बार में। आप निम्नलिखित देखेंगे।

एक्शन आईडी आमतौर पर क्रियाएं होती हैं, जैसे क्रिएट, अपडेट, डिलीट वगैरह। ऐसा इसलिए है क्योंकि क्रियाएँ अक्सर एक संसाधन में एक विशेष परिवर्तन करने के लिए डिज़ाइन की जाती हैं।

एक्शन आईडी में केवल ये अक्षर होने चाहिए - निचले अक्षर, अंक, हाइफ़न और अंडरस्कोर में अंग्रेजी अक्षर।

दो प्रकार की क्रियाएं हैं: इनलाइन और स्टैंडअलोन।

इनलाइन क्रियाएं नियंत्रक वर्ग में परिभाषित की जाती हैं। क्रियाओं के नाम एक्शन आईडी से लिए गए हैं -

  • कार्रवाई ID के सभी शब्दों को अपरकेस में पहला अक्षर चालू करें।
  • हाइफ़न निकालें।
  • क्रिया उपसर्ग जोड़ें।

Examples -

  • सूचकांक क्रिया हो जाता है।
  • हैलो-वर्ल्ड (ऊपर दिए गए उदाहरण के अनुसार) एक्शनहेलोवर्ल्ड बन जाता है।

यदि आप विभिन्न स्थानों में एक ही कार्रवाई का पुन: उपयोग करने की योजना बनाते हैं, तो आपको इसे एक स्टैंडअलोन कार्रवाई के रूप में परिभाषित करना चाहिए।

एक स्टैंडअलोन एक्शन क्लास बनाएं

एक स्टैंडअलोन एक्शन क्लास बनाने के लिए, आपको yii \ base \ Action या चाइल्ड क्लास का विस्तार करना चाहिए, और एक को लागू करना चाहिए run() तरीका।

Step 1- अपनी परियोजना की जड़ के अंदर एक घटक फ़ोल्डर बनाएँ। उस फोल्डर के अंदर एक फाइल बनाई जाती है, जिसका नाम हैGreetingAction.php निम्नलिखित कोड के साथ।

<?php 
   namespace app\components;
   use yii\base\Action;
   class GreetingAction extends Action {
      public function run() {
         return "Greeting";
      }
   }
?>

हमने सिर्फ एक पुन: प्रयोज्य कार्रवाई की है। यह हमारे में उपयोग करने के लिएExampleController, हमें क्रिया मानचित्र में कार्रवाई () विधि को ओवरराइड करके अपनी कार्रवाई की घोषणा करनी चाहिए।

Step 2 - संशोधित करें ExampleController.php इस तरह से फाइल करें।

<?php
   namespace app\controllers;
   use yii\web\Controller;
   class ExampleController extends Controller {
      public function actions() {
         return [
            'greeting' => 'app\components\GreetingAction',
         ];
      }
      public function actionIndex() {
         $message = "index action of the ExampleController";
         
         return $this->render("example",[ 'message' => $message
         ]);
      }
      public function actionHelloWorld() {
         return "Hello world!";
      }
   }
?>

actions() विधि एक सरणी देता है जिसका मान वर्ग के नाम और चाबियाँ हैं, जो कार्रवाई आईडी हैं।

Step 3 - पर जाएं http://localhost:8080/index.php?r=example/greeting। आप निम्न आउटपुट देखेंगे।

Step 4- आप उपयोगकर्ताओं को अन्य URL पर पुनर्निर्देशित करने के लिए भी क्रियाओं का उपयोग कर सकते हैं। निम्नलिखित क्रिया को इसमें जोड़ेंExampleController.php

public function actionOpenGoogle() {
   // redirect the user browser to http://google.com
   return $this->redirect('http://google.com');
}

अब, यदि आप खोलते हैं http://localhost:8080/index.php?r=example/open-google, आपको पुनर्निर्देशित किया जाएगा http://google.com

कार्रवाई के तरीके पैरामीटर ले सकते हैं, जिन्हें कार्रवाई पैरामीटर कहा जाता है । उनके मूल्यों को पुनः प्राप्त किया जाता है$_GET कुंजी के रूप में पैरामीटर नाम का उपयोग करना।

Step 5 - निम्नलिखित क्रिया को हमारे उदाहरण नियंत्रक में जोड़ें।

public function actionTestParams($first, $second) {
   return "$first $second";
}

Step 6 - URL टाइप करें http://localhost:8080/index.php?r=example/testparams&first=hello&second=world आपके वेब ब्राउज़र के एड्रेस बार में, आपको निम्न आउटपुट दिखाई देगा।

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

Step 7 - हमारे संशोधित करें ExampleController इस तरफ।

<?php
   namespace app\controllers;
   use yii\web\Controller;
   class ExampleController extends Controller {
      public $defaultAction = "hello-world";
      /* other actions */
   }
?>

Step 8 - अब, अगर तुम जाओ http://localhost:8080/index.php?r=example, आप निम्नलिखित देखेंगे।

अनुरोध को पूरा करने के लिए, नियंत्रक निम्नलिखित जीवन चक्र से गुजरना होगा -

  • Yii \ base \ नियंत्रक:init() विधि कहा जाता है।

  • कंट्रोलर एक्शन आईडी के आधार पर एक एक्शन बनाता है।

  • नियंत्रक क्रमिक रूप से कॉल करता है beforeAction() वेब अनुप्रयोग, मॉड्यूल और नियंत्रक की विधि।

  • नियंत्रक कार्रवाई चलाता है।

  • नियंत्रक क्रमिक रूप से कॉल करता है afterAction() वेब अनुप्रयोग, मॉड्यूल और नियंत्रक की विधि।

  • आवेदन प्रतिक्रिया के लिए कार्रवाई परिणाम प्रदान करता है।

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

नियंत्रकों को चाहिए -

  • बहुत पतले हो। प्रत्येक क्रिया में कोड की केवल कुछ पंक्तियाँ होनी चाहिए।
  • प्रतिक्रियाओं के लिए दृश्यों का उपयोग करें।
  • HTML एम्बेड न करें।
  • अनुरोध डेटा तक पहुँचें।
  • मॉडल के कॉल तरीके।
  • अनुरोध डेटा संसाधित न करें। इन्हें मॉडल में संसाधित किया जाना चाहिए।