视图


视图(View)的创建规则

MiniFramework 中的规则约定视图文件需要存放在应用的 View 目录中,每个控制器对应一个视图目录,目录中每个动作方法对应一个视图文件,例如:

|--- App/                       应用目录
     |
     |--- Controller/           控制器目录
     |    |--- Index.php        名为 Index 的控制器文件
     |    |--- Info.php         名为 Info 的控制器文件
     |
     |--- View/                 视图目录
          |--- index/           控制器 index 的视图目录
          |    |--- index.php   动作 index 对应的视图文件
          |    |--- show.php    动作 show 对应的视图文件
          |
          |--- info/            控制器 info 的视图目录
               |--- index.php   动作 index 对应的视图文件
               |--- show.php    动作 show 对应的视图文件

上边的目录结构示意了当应用中有两个控制器分别为 Index 和 Info 时,且每个控制器中均包含有 index() 和 show() 两个动作方法时,视图目录中的结构。

控制器动作向视图传值(assign)

在控制器的动作方法中,可以通过 $this->view->assign() 方法将需要在视图中显示的数据进行传递,示例代码如下:

控制器代码:

namespace App\Controller;

use Mini\Base\Action;

class Index extends Action
{
    function indexAction()
    {
        // 创建一个变量
        $text = 'Hello World!';

        // 向 View 传值
        $this->view->assign('info', $text);

        // 渲染并显示 View
        $this->view->display();
    }
}

视图代码:

<p>{$info}</p>

从上边的代码可以看出,在控制器中通过 $this->view->assign('info', $text); 向视图传入了一个名为 info 的变量,其值来自于变量 $text,并通过在控制器中执行 $this->view->display(); 来让视图进行渲染,渲染结果输出给浏览器显示。在视图代码中,通过花括号{}来使用变量。上边的代码执行结果会在浏览器中显示“Hello World!”字样。

提示:MiniFramework 在 2.8.0 版本中加入了一个简单的模板引擎,开发者可通过特定的标记符号,在 View 和 Layout 中预定义变量输出等模板标记。