• yii\base\Controller::render(): 渲染一个 视图名 并使用一个 布局 返回到渲染结果。
  • yii\base\Controller::renderPartial(): 渲染一个 视图名 并且不使用布局。
  • yii\web\Controller::renderAjax(): 渲染一个 视图名 并且不使用布局, 并注入所有注册的JS/CSS脚本和文件,通常使用在响应AJAX网页请求的情况下。
  • yii\base\Controller::renderFile(): 渲染一个视图文件目录或 别名下的视图文件。
  • yii\base\Controller::renderContent(): renders a static string by embedding it into the currently applicable layout. This method is available since version 2.0.1.

例如:namespace app\controllers; use Yii; use app\models\Post; use yii\web\Controller; use yii\web\NotFoundHttpException; class PostController extends Controller { public function actionView($id) { $model = Post::findOne($id); if ($model === null) { throw new NotFoundHttpException; } // 渲染一个名称为"view"的视图并使用布局 return $this->render('view', [ 'model' => $model, ]); } }

嵌套布局

有时候你想嵌套一个布局到另一个,例如,在Web站点不同地方,想使用不同的布局, 同时这些布局共享相同的生成全局HTML5页面结构的基本布局,可以在子布局中调用 yii\base\View::beginContent() 和yii\base\View::endContent() 方法,如下所示:

<?php $this->beginContent('@app/views/layouts/base.php'); ?>...child layout content here...<?php $this->endContent(); ?>

调用 yii\base\View::beginBlock() 和 yii\base\View::endBlock() 来定义数据块, 使用 $view->blocks[$blockID] 访问该数据块, 其中 $blockID 为定义数据块时指定的唯一标识ID。

如下实例显示如何在内容视图中使用数据块让布局使用。

首先,在内容视图中定一个或多个数据块:

...<?php $this->beginBlock('block1'); ?>...content of block1...<?php $this->endBlock(); ?> ... <?php $this->beginBlock('block3'); ?> ...content of block3... <?php $this->endBlock(); ?>

最佳实践

视图负责将模型的数据展示用户想要的格式,总之,视图

  • 应主要包含展示代码,如HTML, 和简单的PHP代码来控制、格式化和渲染数据;
  • 不应包含执行数据查询代码,这种代码放在模型中;
  • 应避免直接访问请求数据,如 $_GET, $_POST,这种应在控制器中执行, 如果需要请求数据,应由控制器推送到视图。
  • 可读取模型属性,但不应修改它们。

为使模型更易于维护,避免创建太复杂或包含太多冗余代码的视图, 可遵循以下方法达到这个目标:

  • 使用 布局 来展示公共代码(如,页面头部、尾部);
  • 将复杂的视图分成几个小视图, 可使用上面描述的渲染方法将这些小视图渲染并组装成大视图;
  • 创建并使用 小部件 作为视图的数据块;
  • 创建并使用助手类在视图中转换和格式化数据。

转载于:https://www.cnblogs.com/chuanqideya/p/6119188.html

YII2 随笔 视图最佳实践相关推荐

  1. php视图最佳实践,PHP 的最佳实践

    今天听了 Mc 对 PHP 的分享,就偷偷把他的分享内容拿过来了. "PHP 是世界上最好的语言", 那么今天的题目就是 Zen of PHP(PHP 之禅). PHP 语言使用原 ...

  2. Yii2 HOW-TO(2):最佳实践(1)

    控制器编程最佳实践 在设计良好的应用中,控制器很精练,包含的操作代码简短: 如果你的控制器很复杂,通常意味着需要重构, 转移一些代码到其他类中. 可访问 请求 数据; 可根据请求数据调用 模型 的方法 ...

  3. 客户数据管理的最佳实践-构建客户统一视图

    文章摘自7月16日,华矩科技数据治理系列讲座,谭海华先生带来的分享:客户数据管理的最佳实践-构建客户统一视图,说明客户数据管理的流程与难点,以及数据质量与治理在构建客户统一视图的角色. 今天我想跟各位 ...

  4. 使用ADO.NET 的最佳实践(zz)

    数据访问:使用 ADO.NET 的最佳实践(ADO.NET 技术文档) 发布日期: 4/1/2004 | 更新日期: 4/1/2004 摘要:编写 Microsoft ADO.NET 代码的最佳实践, ...

  5. 卡片式设计的最佳实践分享

    2017-02-17 三达不留点gpj CocoaChina 卡片本质上是一个简单的信息容器,信息量有限,但设计干净整洁.现如今,在保证界面具有优秀可用性的同时,卡片式的设计甚至成为了平衡界面美学的默 ...

  6. 在微服务架构下基于 Prometheus 构建一体化监控平台的最佳实践

    欢迎关注方志朋的博客,回复"666"获面试宝典 随着 Prometheus 逐渐成为云原生时代的可观测事实标准,那么今天为大家带来在微服务架构下基于 Prometheus 构建一体 ...

  7. 基于 react, redux 最佳实践构建的 2048

    前段时间 React license 的问题闹的沸沸扬扬,搞得 React 社区人心惶惶,好在最终 React 团队听取了社区意见把 license 换成了 MIT.不管 React license ...

  8. 调优 DB2 UDB v8.1 及其数据库的最佳实践-IBM developerWorks

    http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/dm-0404mcarthur/#sqltuning 级别: 初级 ...

  9. 日志管理最佳实践:成功的六要诀【解读版】

    合适的日志管理工具能够大幅减轻管理企业系统日志数据的负担.但是,除非组织为这个工具投入必要的时间和精力,否则再好的工具也会很快变成一个差劲的工具.Diana Kelley为大家提供了6个确保成功的日志 ...

最新文章

  1. 32如何向Linux转,linux使用技巧32则
  2. RRC Connection Reconfiguration
  3. 【JavaSE】day03_Date、SimpleDateFormat、Calendar、Collection
  4. CodeForces 396C 树状数组 + DFS
  5. android软件更新模块实现的技术和方法,Android APK签名原理及方法
  6. 新浪微博-企业微博运营手册
  7. Centos7下安装redis
  8. kotlin访问控制符可见性
  9. jsf tree组件_JSF UI组件标签属性示例教程
  10. Maven学习(四)Maven 命令行选项
  11. linux目录分配独立磁盘空间,Linux 分配/home的磁盘空间给根目录
  12. php iterator接口,PHP预定义接口之Iterator(迭代器)接口演示
  13. 企业管理软件平台架构内幕揭秘
  14. 矩阵的迹tr运算及矩阵求导公式
  15. JDK8与JDK11
  16. 神经网络算法的基本原理,神经网络算法都有哪些
  17. python读写excel文件(xls格式)
  18. matlab画图选项表+标记点大小调整+线段图如何绘制
  19. 泛函极值问题与变分法
  20. Android——一个简单的闹钟APP

热门文章

  1. 【创业】创业团队的那些事(二)
  2. jquery常见操作分享
  3. Java Web Jsp
  4. javascript 的dateObj.getTime() 在为C#的获取方式
  5. webapi文档描述-swagger
  6. 记录一下 Linux飞鸽传书 QIpMsg 的下载链接
  7. HDU 2063 过山车【二分图最大匹配】
  8. 2440启动代码分析
  9. 微软2008系列 (Orcas + Longhorn Server+SQL2008)将于2008年2月27日发布
  10. 今天狂想自杀,找了两个星期的工具,原来我已经有了。