yii2.0视图

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/m0_38004619/article/details/102488562

安全:当创建生成HTML页面的视图时,在显示之前将用户输入数据进行转码和过滤非常重要, 否则,你的应用可能会被 跨站脚本 攻击。

//转义
<?php
use yii\helpers\Html;
?>

<div class="username">
    <?= Html::encode($user->name) ?>
</div>

//过滤
<?php
use yii\helpers\HtmlPurifier;
?>

<div class="post">
    <?= HtmlPurifier::process($post->text) ?>
</div>

组织视图 :控制器渲染的视图文件默认放在 @app/views/ControllerID 目录下, 其中 ControllerID 对应 控制器 ID, 例如控制器类为 PostController,视图文件目录应为 @app/views/post, 控制器类 PostCommentController对应的目录为@app/views/post-comment, 对于 小部件 渲染的视图文件默认放在 WidgetPath/views 目录, 其中 WidgetPath 代表小部件类文件所在的目录;

控制器中渲染:要渲染控制器中的视图,可以使用下面的方法

  • render() − 渲染一个视图,并应用布局
  • renderFile() − 在一个给定的文件路径或别名来渲染视图
  • renderAjax() − 渲染视图但不使用布局,但所有的注入JS和CSS文件
  • renderPartial() − 渲染视图,但不使用布局
  • renderContent() − 渲染一个静态字符串并应用布局

视图赋值

1. 方法一(推荐)

// 控制器中赋值变量
public function actionIndex()  
{  
    $this->getView()->params['title'] = 'here is index';  
    return $this->render('index');  
}  

// 视图中显示变量
<?php echo $this->params['title']; ?>

注:params 是 YII 视图类中预定义的一个成员变量,所以可以直接通过 $this->params 引用。

优点:在视图文件中你可能需要处理控制器传递过来的变量,比如:$title = $this->params['title'],那么通过 $title 和 $this->params['title'] 这两个写法你可以很容易区分哪个变量是在视图文件中临时定义的,哪个变量是从控制器中传递过来;同时也防止变量因为名字相同而覆盖。

2. 方法二

// 控制器中赋值变量
public function actionIndex()  
{  
    $params = array('title'=>'here is index');
    return $this->render('index', $params);  
}  

// 视图中显示变量
<?php echo $title; ?>

小部件中渲染 :在 小部件 中,可调用以下小部件方法来渲染视图:render(): 渲染一个 视图名. 别名下的视图文件。

namespace app\components;

use yii\base\Widget;
use yii\helpers\Html;

class ListWidget extends Widget
{
    public $items = [];

    public function run()
    {
        // 渲染一个名为 "list" 的视图
        return $this->render('list', [
            'items' => $this->items,
        ]);
    }
}

猜你喜欢

转载自blog.csdn.net/m0_38004619/article/details/102488562