1、视图创建与调用
(1)创建
在根目录下的views文件夹下创建对应控制器名称的文件,在这个文件夹下创建视图文件
(2)调用
控制器HelloController.php
namespace app\controllers;
use yii\web\Controller;
class HelloController extends Controller{
public function actionIndex(){
//使用方法renderPartial渲染视图,前面必须有return
return $this->renderPartial('index');
}
}
视图文件index.php
<h4>哈哈哈哈</h4>
结果:
2、数据传递
控制器:
namespace app\controllers;
use yii\web\Controller;
use yii\web\Cookie;
class HelloController extends Controller{
public function actionIndex(){
//待传递的参数
$str = 'oh my gosh!';
$arr = array('what an idiot,', 'don\'t you say that');
//创建数组
$data = array();
//把待传递参数放入数组中
$data['str'] = $str;
$data['arr'] = $arr;
//数组data传递给视图
return $this->renderPartial('index', $data);
}
}
视图:
<h4><?=$str;?></h4>
<h6><?=$str . $arr[0] . $arr[1];?></h6>
结果:
3、数据安全
(1)解析数据中的标签
当控制器传递给视图的数据中有标签或js代码,而我们又想原样输出时,可以使用Html::encode()处理数据;如果想过滤掉标签或js等,则使用HtmlPurifier::process()处理数据。使用这两个类方法,需要引入。实例代码如下:
HelloController.php
namespace app\controllers;
use yii\web\Controller;
use yii\web\Cookie;
class HelloController extends Controller{
public function actionIndex(){
//待传递的参数
$str = 'oh my gosh!<script type="text/javascript">alert(\'it is amazing\')</script>';
//创建数组
$data = array();
//把待传递参数放入数组中
$data['str'] = $str;
//数组data传递给视图
return $this->renderPartial('index', $data);
}
}
index.php
<?php
//引入需要的类
use yii\helpers\Html;
use yii\helpers\HtmlPurifier;
?>
<h4><?=Html::encode($str);?></h4>
<h4><?=HtmlPurifier::process($str);?></h4>
结果: