Yii - दृश्य

उपयोगकर्ता को समाप्त करने के लिए डेटा प्रस्तुत करने के लिए दृश्य जिम्मेदार हैं। वेब अनुप्रयोगों में,Views HTML और PHP कोड वाली सिर्फ PHP स्क्रिप्ट फाइलें हैं।

दृश्य बनाना

Step 1 - हम पर एक नजर है ‘About’ मूल एप्लिकेशन टेम्पलेट का दृश्य।

<?php
   /* @var $this yii\web\View */ use yii\helpers\Html; $this->title = 'About';
   $this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-about">
   <h1><?= Html::encode($this->title) ?></h1>
   <p>
      This is the About page. You may modify the following file to customize its content:
   </p>
   <code><?= __FILE__ ?></code>
</div>

$this चर दृश्य घटक को संदर्भित करता है जो इस दृश्य टेम्पलेट को प्रबंधित और प्रस्तुत करता है।

इस प्रकार है ‘About’ पेज ऐसा दिखता है -

XSS हमलों से बचने के लिए अंतिम उपयोगकर्ता से आने वाले डेटा को एन्कोड और / या फ़िल्टर करना महत्वपूर्ण है। आपको कॉल करके हमेशा एक सादे पाठ को एनकोड करना चाहिएyii\helpers\Html::encode() और कॉल करके HTML सामग्री yii\helpers\HtmlPurifier

Step 2 - संशोधित करें ‘About’ निम्नलिखित तरीके से देखें।

<?php
   /* @var $this yii\web\View */ use yii\helpers\Html; use yii\helpers\HtmlPurifier; $this->title = 'About';
   $this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-about">
   <h1><?= Html::encode($this->title) ?></h1>
   <p>
      This is the About page. You may modify the following file to customize its content:
   </p>
   <p>
      <?= Html::encode("<script>alert('alert!');</script><h1>ENCODE EXAMPLE</h1>>") ?>
   </p>
   <p>
      <?= HtmlPurifier::process("<script>alert('alert!');</script><h1> HtmlPurifier EXAMPLE</h1>") ?>
   </p>
   <code><?= __FILE__ ?></code>
</div>

Step 3 - अब टाइप करें http://localhost:8080/index.php?r=site/about। आपको निम्न स्क्रीन दिखाई देगी।

ध्यान दें, कि जावास्क्रिप्ट कोड अंदर है Html::encode()फ़ंक्शन को सादे पाठ के रूप में प्रदर्शित किया जाता है। एक ही बात के लिए हैHtmlPurifier::process()कहते हैं। केवल h1 टैग प्रदर्शित किया जा रहा है।

दृश्य इन सम्मेलनों का अनुसरण करते हैं -

  • दृश्य, जो एक नियंत्रक द्वारा प्रस्तुत किए जाते हैं, को इसमें डाला जाना चाहिए @app/views/controllerID फ़ोल्डर।

  • दृश्य, जो एक विजेट में प्रस्तुत किए गए हैं, को इसमें डाला जाना चाहिए widgetPath/views folder

रेंडर करने के लिए ए view within a controller, आप निम्नलिखित विधियों का उपयोग कर सकते हैं -

  • render() - एक दृश्य प्रस्तुत करता है और एक लेआउट लागू करता है।

  • renderPartial() - एक लेआउट के बिना एक दृश्य प्रस्तुत करना।

  • renderAjax() - एक लेआउट के बिना एक दृश्य प्रस्तुत करता है, लेकिन सभी पंजीकृत जेएस और सीएसएस फ़ाइलों को इंजेक्ट करता है।

  • renderFile() - दिए गए फ़ाइल पथ या अन्य नाम में कोई दृश्य प्रस्तुत करना।

  • renderContent() - एक स्थिर स्ट्रिंग का प्रतिपादन और एक लेआउट लागू होता है।

रेंडर करने के लिए ए view within another view, आप निम्नलिखित विधियों का उपयोग कर सकते हैं -

  • render() - एक दृश्य प्रस्तुत करना।

  • renderAjax() - एक लेआउट के बिना एक दृश्य प्रस्तुत करता है, लेकिन सभी पंजीकृत जेएस और सीएसएस फ़ाइलों को इंजेक्ट करता है।

  • renderFile() - दिए गए फ़ाइल पथ या अन्य नाम में कोई दृश्य प्रस्तुत करना।

Step 4 - दृश्य / साइट फ़ोल्डर के अंदर, दो दृश्य फ़ाइलें बनाएँ: _part1.php and _part2.php

_part1.php -

<h1>PART 1</h1>

_part2.php -

<h1>PART 2</h1>

Step 5 - अंत में, इन दो नव निर्मित विचारों को अंदर प्रस्तुत करें ‘About’ राय।

<?php
   /* @var $this yii\web\View */
   use yii\helpers\Html;
   $this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-about"> <h1><?= Html::encode($this->title) ?></h1>
   <p>
      This is the About page. You may modify the following file to customize its content:
   </p>
   <?= $this->render("_part1") ?> <?= $this->render("_part2") ?>
   <code><?= __FILE__ ?></code>
</div>

आप निम्न आउटपुट देखेंगे -

किसी दृश्य को प्रस्तुत करते समय, आप दृश्य नाम या दृश्य फ़ाइल पथ / उपनाम के रूप में उपयोग करके दृश्य को परिभाषित कर सकते हैं। एक दृश्य नाम निम्नलिखित तरीके से हल किया गया है -

  • एक दृश्य नाम एक्सटेंशन को छोड़ सकता है। उदाहरण के लिए, दृश्य के बारे में। Php फ़ाइल से मेल खाती है।

  • यदि दृश्य नाम "/" से शुरू होता है, तो यदि वर्तमान में सक्रिय मॉड्यूल मंच है, और दृश्य नाम टिप्पणी / पोस्ट है, तो पथ @ ऐप / मॉड्यूल / मंच / विचार / टिप्पणी / पोस्ट होगा। यदि कोई सक्रिय मॉड्यूल नहीं है, तो पथ @ ऐप / विचार / टिप्पणी / पोस्ट होगा।

  • यदि दृश्य नाम "//" से शुरू होता है, तो संबंधित पथ @ ऐप / विचार / ViewName होगा। उदाहरण के लिए, // साइट / संपर्क @ ऐप / विचार / साइट / contact.php से मेल खाती है।

  • यदि दृश्य नाम संपर्क है, और संदर्भ नियंत्रक साइटकंट्रोलर है, तो पथ @ ऐप / विचार / साइट / संपर्क .php होगा।

  • यदि मूल्य दृश्य माल दृश्य के भीतर प्रदान किया जाता है, तो मूल्य @ ऐप / विचार / चालान / कीमत के रूप में हल किया जाएगा यदि यह @ ऐप / विचार / चालान / माल में प्रस्तुत किया जा रहा है।

दृश्य में डेटा तक पहुँचना

किसी दृश्य में डेटा एक्सेस करने के लिए, आपको डेटा को व्यू रेंडरिंग विधि के दूसरे पैरामीटर के रूप में पास करना चाहिए।

Step 1 - संशोधित करें actionAbout का SiteController

public function actionAbout() {
   $email = "[email protected]"; $phone = "+78007898100";
   return $this->render('about',[ 'email' => $email,
      'phone' => $phone
   ]);
}

ऊपर दिए गए कोड में, हम दो चर पास करते हैं $email तथा $phone में प्रस्तुत करना About राय।

Step 2 - व्यू कोड के बारे में बदलें।

<?php
   /* @var $this yii\web\View */
   use yii\helpers\Html;
   $this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; ?> <div class = "site-about"> <h1><?= Html::encode($this->title) ?></h1>
   <p>
      This is the About page. You may modify the following file to customize its content:
   </p>
   <p>
      <b>email:</b> <?= $email ?> </p> <p> <b>phone:</b> <?= $phone ?>
   </p>
   <code><?= __FILE__ ?></code>
</div>

हमने अभी दो वैरिएबल जोड़े हैं जो हमें प्राप्त हुए हैं SiteController

Step 3 - URL टाइप करें http://localhost:8080/index.php?r=site/about वेब ब्राउज़र में, आप निम्नलिखित देखेंगे।