yii2檢視
示例程式碼
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $form yii\widgets\ActiveForm */
/* @var $model app\models\LoginForm */
$this->title = 'Login';
?>
<h1><?= Html::encode($this->title) ?></h1>
<p>Please fill out the following fields to login:</p>
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<?= Html::submitButton('Login') ?>
<?php ActiveForm::end(); ?>
控制器中渲染
yii\base\Controller::render(): 渲染一個 檢視名 並使用一個 佈局 返回到渲染結果。
yii\base\Controller::renderPartial(): 渲染一個 檢視名 並且不使用佈局。
yii\web\Controller::renderAjax(): 渲染一個 檢視名 並且不使用佈局, 並注入所有註冊的JS/CSS指令碼和檔案,通常使用在響應AJAX網頁請求的情況下。
yii\base\Controller::renderFile(): 渲染一個檢視檔案目錄或別名下的檢視檔案。
小部件中渲染
yii\base\Widget::render(): 渲染一個 檢視名.
yii\base\Widget::renderFile(): 渲染一個檢視檔案目錄或別名下的檢視檔案。
其他地方渲染
// 顯示檢視檔案 "@app/views/site/license.php"
echo \Yii::$app->view->renderFile('@app/views/site/license.php');
檢視中訪問資料
echo $this->render('report', [
'foo' => 1,
'bar' => 2,
]);
<?= $this->context->id ?>
佈局
<?php
use yii\helpers\Html;
/* @var $this yii\web\View */
/* @var $content string 字串 */
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<?= Html::csrfMetaTags() ?>
<title><?= Html::encode($this->title) ?></title>
<?php $this->head() ?>
</head>
<body>
<?php $this->beginBody() ?>
<header>My Company</header>
<?= $content ?>
<footer>© 2014 by My Company</footer>
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
yii\base\View::beginPage(): 該方法應在佈局的開始處呼叫, 它觸發表明頁面開始的 yii\base\View::EVENT_BEGIN_PAGE 事件。
yii\base\View::endPage(): 該方法應在佈局的結尾處呼叫, 它觸發表明頁面結尾的 yii\base\View::EVENT_END_PAGE 時間。
yii\web\View::head(): 該方法應在HTML頁面的<head>標籤中呼叫, 它生成一個佔位符,在頁面渲染結束時會被註冊的頭部HTML程式碼(如,link標籤, meta標籤)替換。
yii\web\View::beginBody(): 該方法應在<body>標籤的開始處呼叫, 它觸發 yii\web\View::EVENT_BEGIN_BODY 事件並生成一個佔位符, 會被註冊的HTML程式碼(如JavaScript)在頁面主體開始處替換。
yii\web\View::endBody(): 該方法應在<body>標籤的結尾處呼叫, 它觸發 yii\web\View::EVENT_END_BODY 事件並生成一個佔位符, 會被註冊的HTML程式碼(如JavaScript)在頁面主體結尾處替換。
控制器中修改佈局檔案
namespace app\controllers;
use yii\web\Controller;
class PostController extends Controller
{
public $layout = 'post';
// ...
}
使用檢視元件
[
// ...
'components' => [
'view' => [
'class' => 'app\components\View',
],
// ...
],
]
註冊Meta元標籤
<?php
$this->registerMetaTag(['name' => 'keywords', 'content' => 'yii, framework, php']);
?>
$this->registerMetaTag(['name' => 'description', 'content' => 'This is my cool website made with Yii!'], 'description');
$this->registerMetaTag(['name' => 'description', 'content' => 'This website is about funny raccoons.'], 'description');
檢視事件
yii\base\View::EVENT_BEFORE_RENDER: 在控制器渲染檔案開始時觸發, 該事件可設定 yii\base\ViewEvent::isValid 為 false 取消檢視渲染。
yii\base\View::EVENT_AFTER_RENDER: 在佈局中呼叫 yii\base\View::beginPage() 時觸發, 該事件可獲取yii\base\ViewEvent::output的渲染結果,可修改該屬性來修改渲染結果。
yii\base\View::EVENT_BEGIN_PAGE: 在佈局呼叫 yii\base\View::beginPage() 時觸發;
yii\base\View::EVENT_END_PAGE: 在佈局呼叫 yii\base\View::endPage() 是觸發;
yii\web\View::EVENT_BEGIN_BODY: 在佈局呼叫 yii\web\View::beginBody() 時觸發;
yii\web\View::EVENT_END_BODY: 在佈局呼叫 yii\web\View::endBody() 時觸發。