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

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

准备

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

如何做…

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

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

工作原理…

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

更多…

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