Yii - Görünümler
Verilerin son kullanıcılara sunulmasından görünümler sorumludur. Web uygulamalarında,Views sadece HTML ve PHP kodu içeren PHP betik dosyalarıdır.
Görünümler Oluşturma
Step 1 - Şuna bir göz atalım ‘About’ temel uygulama şablonunun görünümü.
<?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 değişken, bu görünüm şablonunu yöneten ve işleyen görünüm bileşenini ifade eder.
Bu nasıl ‘About’ sayfa şöyle görünüyor -
XSS saldırılarını önlemek için son kullanıcıdan gelen verileri kodlamak ve / veya filtrelemek önemlidir. Her zaman arayarak düz bir metni kodlamalısınızyii\helpers\Html::encode() ve çağırarak HTML içeriği yii\helpers\HtmlPurifier.
Step 2 - Değiştirin ‘About’ Aşağıdaki şekilde görüntüleyin.
<?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 - Şimdi yazın http://localhost:8080/index.php?r=site/about. Aşağıdaki ekranı göreceksiniz.
Dikkat edin, javascript kodu, Html::encode()işlevi düz metin olarak görüntülenir. Aynı şey içinHtmlPurifier::process()aramak. Yalnızca h1 etiketi görüntüleniyor.
Görünümler bu kuralları izler -
Bir denetleyici tarafından oluşturulan görünümler, @app/views/controllerID Klasör.
Bir widget'ta oluşturulan görünümler, widgetPath/views folder.
İşlemek için view within a controller, aşağıdaki yöntemleri kullanabilirsiniz -
render() - Bir görünüm oluşturur ve bir düzen uygular.
renderPartial() - Düzensiz bir görünüm oluşturur.
renderAjax() - Düzensiz bir görünüm oluşturur, ancak tüm kayıtlı js ve css dosyalarını enjekte eder.
renderFile() - Belirli bir dosya yolunda veya takma adda bir görünüm oluşturur.
renderContent() - Statik bir dizge oluşturur ve bir düzen uygular.
İşlemek için view within another view, aşağıdaki yöntemleri kullanabilirsiniz -
render() - Bir görünüm oluşturur.
renderAjax() - Düzensiz bir görünüm oluşturur, ancak tüm kayıtlı js ve css dosyalarını enjekte eder.
renderFile() - Belirli bir dosya yolunda veya takma adda bir görünüm oluşturur.
Step 4 - Görünümler / site klasörünün içinde iki görünüm dosyası oluşturun: _part1.php and _part2.php.
_part1.php -
<h1>PART 1</h1>
_part2.php -
<h1>PART 2</h1>
Step 5 - Son olarak, yeni oluşturulan bu iki görünümü ‘About’ Görünüm.
<?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>
Aşağıdaki çıktıyı göreceksiniz -
Bir görünümü oluştururken, görünümü bir görünüm adı veya bir görünüm dosyası yolu / takma adı kullanarak tanımlayabilirsiniz. Görünüm adı aşağıdaki şekilde çözümlenir -
Bir görünüm adı uzantıyı atlayabilir. Örneğin, hakkında görünümü, about.php dosyasına karşılık gelir.
Görünüm adı "/" ile başlıyorsa, o zaman aktif modül forumsa ve görünüm adı yorum / yayın ise, yol @ uygulama / modüller / forum / görünümler / yorum / yayın olacaktır. Etkin modül yoksa, yol @ app / views / comment / post olacaktır.
Görünüm adı "//" ile başlıyorsa, ilgili yol @ app / views / ViewName olacaktır. Örneğin, // site / contact @ app / views / site / contact.php'ye karşılık gelir.
Görünüm adı contact ise ve içerik denetleyicisi SiteController ise, yol @ app / views / site / contact.php olacaktır.
Fiyat görünümü mal görünümünde işlenirse, fiyat @ app / views / invoice / goods.php içinde işleniyorsa @ app / views / invoice / price.php olarak çözülür.
Görünümlerdeki Verilere Erişim
Bir görünüm içindeki verilere erişmek için, verileri ikinci parametre olarak görünüm oluşturma yöntemine iletmelisiniz.
Step 1 - Değiştirin actionAbout of SiteController.
public function actionAbout() {
$email = "[email protected]"; $phone = "+78007898100";
return $this->render('about',[ 'email' => $email,
'phone' => $phone
]);
}
Yukarıda verilen kodda iki değişken geçiyoruz $email ve $phone içinde oluşturmak About görünüm.
Step 2 - Hakkında görüntüleme kodunu değiştirin.
<?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>
Az önce aldığımız iki değişkeni ekledik. SiteController.
Step 3 - URL'yi yazın http://localhost:8080/index.php?r=site/about web tarayıcısında aşağıdakileri göreceksiniz.