首页 > 技术文章 > 关于Yii2中的MVC中的视图总结(持续更新中)

fpcing 2017-10-17 10:54 原文

一、首先在控制器中,将处理好的数据发送给前台:

$this->layout = 'base'; 这里填写视图的模板文件(可以不写这行代码,如果不写,默认为views/layouts/main.php这个文件)

return $this->render ('这里填写视图文件名称',['user'=>这里填写处理好的数据(比如说数组$list等等)]);

如果不想使用模板文件,那么这里的写法为 return $this->renderPartial('index');

前台接受为$user

二、准备好模板文件:

<?php 
use yii\helpers\Html;
use yii\helpers\Url;
use yii\web\View;
$this->registerCssFile('@web/public/frontend/css/style.css');
$this->registerJsFile('@web/public/frontend/js/jquery.min.js',['position'=>View::POS_HEAD]);
$this->registerJsFile('@web/public/frontend/js/index.js',['position'=>View::POS_HEAD]);
?>
<?php $this->beginPage()?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<?= Html::encode($this->title)?>
<?= $this->head()?>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
</head>
<body>
<?php $this->beginBody()?>
<?= $content?>
<?php $this->endBody()?>
</body>
</html>
<?php $this->endPage()?>
View Code

三、建立视图文件

如果控制器是SiteController,那么文件建立在views/site/(xxx.php),简单来说,这个视图文件,将被视为二中的$content,放入模板文件中。

视图文件的<style>中的背景图片的路径写法:

{background:url(/public/frontend/images-pc/p04.png) no-repeat 0 center;}

渲染静态页面 

静态页面指的是大部分内容为静态的不需要控制器传递 动态数据的Web页面。

可将HTML代码放置在视图中,在控制器中使用以下代码输出静态页面:

public function actionAbout()
{
    return $this->render('about');
}

如果Web站点包含很多静态页面,多次重复相似的代码显得很繁琐, 为解决这个问题,可以使用一个在控制器中称为 yii\web\ViewAction 的独立动作。 例如:

namespace app\controllers;

use yii\web\Controller;

class SiteController extends Controller
{
    public function actions()
    {
        return [
            'page' => [
                'class' => 'yii\web\ViewAction',
            ],
        ];
    }
}

现在如果你在@app/views/site/pages目录下创建名为 about 的视图, 可通过如下url显示该视图:

http://localhost/index.php?r=site/page&view=about

GET 中 view 参数告知 yii\web\ViewAction 动作请求哪个视图,然后操作在 @app/views/site/pages目录下寻找该视图,可配置 yii\web\ViewAction::$viewPrefix 修改搜索视图的目录。

推荐阅读