مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

بررسی ویو View ها در فریمورک Yii


View ها مسئول ارائه داده ها، برای کاربران نهایی هستند. در برنامه های تحت وب (web applications)، view ها فایل های PHP ی هستند که شامل کدهای HTML و PHP می باشند.

ساخت Viewها

مرحله 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 به کامپوننت view اشاره دارد که قالب view را مدیریت و ارائه یا render می کند.

در زیر می توانید تصویر صفحه ‘About’ را مشاهده نمایید -

نکته ی مهمی که در اینجا باید به آن اشاره کرد این است که برای جلوگیری از حملات XSS، داده هایی را که از طرف کاربر نهایی می آیند را رمزگذاری (encode) و یا فیلتر کنید. در نظر داشته باشید که شما باید همیشه یک متن ساده را با فراخوانی yii\helpers\Html::encode() و محتوای HTML با فراخوانی با yii\helpers\HtmlPurifier رمزگذاری یا encode کنید.

 

مرحله 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>

مرحله 3 – حال در آدرسبار مرورگرتان http://localhost:8080/index.php?r=site/about را تایپ کنید. آنچه که شما مشاهده می کنید مطابق تصویر زیر می باشد.

توجه داشته باشید که، کد جاوا اسکریپتی که درون تابع HTML :: encode () قرار می گیرد به صورت متن ساده نمایش داده می شود. همین اتفاق، در فراخوانی  HtmlPurifier :: process () نیز اتفاق می افتد، فقط تنها برچسب h1 نمایش داده می شود.

View ها از قوانین زیر پیروی می کنند -

  • View هایی که توسط یک controller ارائه (render) می شوند باید در پوشه @app/views/controllerID قرار داده شوند.
  • View هایی  که در یک widget ارائه (render) می شوند، باید در پوشه widgetPath/views  قرار گیرند.

برای render یک view با یک controller ، می توانید از روش های زیر استفاده کنید -

  • render() - یک view و یک طرح (layout) را ارائه یا render می کند.
  • renderPartial () - یک view بدون یک طرح (layout) را ارائه یا render می کند.
  • renderAjax () – یک view بدون یک طرح (layout) را نمایش می دهد، اما تمام فایل های js و css ثبت شده را تزریق یا اعمال می کند.
  • renderFile () - یک view را در مسیر فایل یا aliasش، ارائه یا render می کند.
  • renderContent () - رشته ای استاتیک را ارائه می دهد و یک طرح (layout) را اعمال می کند.

برای render کردن یک view داخل view دیگر، می توانید از روش های زیر استفاده کنید:

 

  • render() - یک view را ارائه یا render می کند.
  • renderAjax () – یک view را بدون یک طرح (layout) ارائه یا render می کند، اما تمام فایل های js و css ثبت شده را تزریق و اعمال می کند.
  • renderFile () - یک view را در مسیر فایل یا aliasش، render می کند.

مرحله 4 - داخل پوشه views/site، دو فایل view را ایجاد کنید:

  • _part1.php
  • _part2.php

_part1.php

<h1>PART 1</h1>

_part2.php

<h1>PART 2</h1>

مرحله 5 - در نهایت، این دو view تازه ایجاد شده را در ویو «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>

 

کد فوق، خروجی زیر را تولید می کند -

هنگامی  رندر کردن یک view، شما می توانید view را با استفاده از نام view یا مسیر view که عبارت است از path/alias تعریف کنید.

نام یک view می تواند به روش زیر به دست آید -

  • برای نامگذاری یک view فرمت فایل را حذف می کنیم. برای مثال، view abut مربوط به فایل abut.php است.
  • اگر نام view با "/" آغاز شود، و ماژول frum فعال باشد و نام ویو cmment/post باشد، مسیر عبارت خواهد بود از @app/mdules/forum/views/comment/post. اگر ماژول فعالی وجود نداشته باشد، مسیر @app/views/cmment/post خواهد بود.
  • اگر نام view با "//" شروع شود، مسیر مربوطه @app/views/ViewName خواهد بود. به عنوان مثال، //site/cntact با فایل @app/views/site/cntact.php مرتبط است.
  • اگر نام ویو cntact باشد، و کنترلر متن SiteCntroller باشد، پس مسیر @app/views/site/cntact.php خواهد بود.
  • اگر ویو price  در ویو gods رندر شده باشد، price دارای مسیر @app/views/invice/price.php خواهد شد، اگر در @app/views/invice/goods.php رندر شده باشد.

دسترسی به داده ها در view ها

برای دسترسی به داده ها در یک view، شما باید داده ها را به عنوان پارامتر دوم به متد rendering در view منتقل کنید.

مرحله 1 – متد actionAbout در کنترلر SiteController را ویرایش کنید.

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

در کد ذکر شده در بالا، ما دو متغیر $email و $phone را برای نمایش به ویو About می فرستیم.

مرحله 2 - کد مربوط به about view را تغییر دهید.

<?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 دریافت کردیم به  about viewاضافه کردیم.

مرحله 3 - آدرس http://localhost:8080/index.php?r=site/about را در آدرسبار مرورگر تان تایپ کنید، آنچه که مشاهده خواهید کرد مطابق با تصویر زیر می باشد.

فصلِ: 14 , تعداد قسمت ها: 188 , سطح: صفر تا صد

این فصل در یک نگاه:

سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید