Yii视图 Yii模块 Yii 布局 视图负责将数据呈现给最终用户。在Web应用程序中, Views 只是包含HTML和PHP代码的PHP脚本文件。 创建视图 第1步 - 让我们看看 基本应用程序模板的 “关于” 视图。 <?php /* @var $this yii\web\View */ use yii\helpers\Html; $this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-about"> <h1><?= Html::encode($this->title) ?></h1> <p> This is the About page. You may modify the following file to customize its content: </p> <code><?= __FILE__ ?></code> </div> 在 $ 此变量是指管理和呈现此视图模板视图组件。 这就是 '关于' 页面的外观 - 编码和/或过滤来自最终用户的数据以避免XSS攻击非常重要。你应该总是通过调用 yii \ helpers \ Html :: encode() 和HTML内容来调用 yii \ helpers \ HtmlPurifier 来对纯文本 进行编码 。 第2步 - 按以下方式修改 “关于” 视图。 <?php /* @var $this yii\web\View */ use yii\helpers\Html; use yii\helpers\HtmlPurifier; $this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-about"> <h1><?= Html::encode($this->title) ?></h1> <p> This is the About page. You may modify the following file to customize its content: </p> <p> <?= Html::encode("<script>alert('alert!');</script><h1>ENCODE EXAMPLE</h1>>") ?> </p> <p> <?= HtmlPurifier::process("<script>alert('alert!');</script><h1> HtmlPurifier EXAMPLE</h1>") ?> </p> <code><?= __FILE__ ?></code> </div> 第3步 - 现在键入 http:// localhost:8080 / index.php?r = site / about 。您将看到以下屏幕。 注意, Html :: encode() 函数内的JavaScript代码以纯文本显示。同样的事情是 HtmlPurifier ::过程() 调用。仅显示h1标签。 观点遵循这些公约 - 由控制器呈现的视图应放置在 @ app / views / controllerID 文件夹中。 在小部件中呈现的视图应放入 widgetPath / views文件夹中 。 要 在控制器中 呈现 视图, 可以使用以下方法 - render() - 渲染视图并应用布局。 renderPartial() - 呈现没有布局的视图。 renderAjax() - 呈现没有布局的视图,但注入所有注册的js和css文件。 renderFile() - 渲染给定文件路径或别名中的视图。 renderContent() - 呈现静态字符串并应用布局。 要 在另一个视图中 渲染 视图 ,可以使用以下方法 - render() - 渲染一个视图。 renderAjax() - 呈现没有布局的视图,但注入所有注册的js和css文件。 renderFile() - 渲染给定文件路径或别名中的视图。 第4步 - 在views / site文件夹中,创建两个视图文件: _part1.php和_part2.php 。 _part1.php - <h1>PART 1</h1> _part2.php - <h1>PART 2</h1> 第5步 - 最后,在 '关于' 视图内渲染这两个新创建 的 视图。 <?php /* @var $this yii\web\View */ use yii\helpers\Html; $this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-about"> <h1><?= Html::encode($this->title) ?></h1> <p> This is the About page. You may modify the following file to customize its content: </p> <?= $this->render("_part1") ?> <?= $this->render("_part2") ?> <code><?= __FILE__ ?></code> </div> 您将看到以下输出 - 渲染视图时,可以使用视图名称或视图文件路径/别名来定义视图。视图名称按以下方式解决 - 视图名称可以省略扩展名。例如,about视图对应于about.php文件。 如果视图名称以“/”开头,那么如果当前活动的模块是论坛,并且视图名称是comment / post,则路径将是@app / modules / forum / views / comment / post。如果没有活动模块,路径将为@ app / views / comment / post。 如果视图名称以“//”开头,则相应的路径将为@ app / views / ViewName。例如,// site / contact对应于@ app / views / site / contact.php。 如果视图名称是联系人,并且上下文控制器是SiteController,那么路径将是@ app / views / site / contact.php。 如果价格视图在商品视图内呈现,则价格将被解析为@ app / views / invoice / price.php,如果它正在@ app / views / invoice / goods.php中呈现。 访问视图中的数据 要访问视图中的数据,您应该将数据作为第二个参数传递给视图呈现方法。 第1步 - 修改 动作 关于 SiteController 。 public function actionAbout() { $email = "admin@support.com"; $phone = "+78007898100"; return $this->render('about',[ 'email' => $email, 'phone' => $phone ]); } 在上面给出的代码中,我们传递两个变量 $ email 和 $ phone 以在 关于 视图中呈现。 第2步 - 更改关于查看代码。 <?php /* @var $this yii\web\View */ use yii\helpers\Html; $this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; ?> <div class = "site-about"> <h1><?= Html::encode($this->title) ?></h1> <p> This is the About page. You may modify the following file to customize its content: </p> <p> <b>email:</b> <?= $email ?> </p> <p> <b>phone:</b> <?= $phone ?> </p> <code><?= __FILE__ ?></code> </div> 我们刚刚添加了两个从 SiteController 收到的 变量 。 第3步 - 在Web浏览器中输入URL http:// localhost:8080 / index.php?r = site / about ,您将看到以下内容。 Yii模块 Yii 布局