View on GitHub

yii2-cookbook-chinese

Yii Application Development Cookbook(Third Edition)中文翻译

在一个视图中使用控制器上下文

Yii视图非常强大,并且有许多特性。其中一个就是你可以在一个视图中使用控制器上下文。所以,我们来试下吧。

准备

按照官方指南http://www.yiiframework.com/doc-2.0/guide-start-installation.html的描述,使用Composer包管理器创建一个新的应用。

如何做…

  1. 创建controllers/ViewController.php
<?php
namespace app\controllers;
use yii\web\Controller;
class ViewController extends Controller
{
    public $pageTitle;
    public function actionIndex()
    {
        $this->pageTitle = 'Controller context test';
        return $this->render('index');
    }
    public function hello()
    {
        if (!empty($_GET['name'])) {
            echo 'Hello, ' . $_GET['name'] . '!';
        }
    }
}
  1. 现在,我们创建views/view.php来展示我们可以做的事情:
<h1><?= $this->context->pageTitle ?></h1>
<p>Hello call. <?php $this->context->hello() ?></p>
  1. 为了测试它,你可以访问/index.php?r=view/index&name=Alex

工作原理…

我们在一个视图中使用$this来引用当前运行的控制器。当做这些事情的时候,我们可以调用一个控制器方法,并访问他的属性。最常使用的属性是pageTitle,它表示当前页面的标题。在视图中,有许多内置的方法特别有用,例如renderPartials和小组件。

更多…

http://www.yiiframework.com/doc-2.0/guide-structure-views.html#accessing-data-in-views地址包含了CController的API文档,这里你可以到方法的列表,这些你可以用在你的视图中。