YII2 随笔 视图最佳实践
- 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 随笔 视图最佳实践相关推荐
- php视图最佳实践,PHP 的最佳实践
今天听了 Mc 对 PHP 的分享,就偷偷把他的分享内容拿过来了. "PHP 是世界上最好的语言", 那么今天的题目就是 Zen of PHP(PHP 之禅). PHP 语言使用原 ...
- Yii2 HOW-TO(2):最佳实践(1)
控制器编程最佳实践 在设计良好的应用中,控制器很精练,包含的操作代码简短: 如果你的控制器很复杂,通常意味着需要重构, 转移一些代码到其他类中. 可访问 请求 数据; 可根据请求数据调用 模型 的方法 ...
- 客户数据管理的最佳实践-构建客户统一视图
文章摘自7月16日,华矩科技数据治理系列讲座,谭海华先生带来的分享:客户数据管理的最佳实践-构建客户统一视图,说明客户数据管理的流程与难点,以及数据质量与治理在构建客户统一视图的角色. 今天我想跟各位 ...
- 使用ADO.NET 的最佳实践(zz)
数据访问:使用 ADO.NET 的最佳实践(ADO.NET 技术文档) 发布日期: 4/1/2004 | 更新日期: 4/1/2004 摘要:编写 Microsoft ADO.NET 代码的最佳实践, ...
- 卡片式设计的最佳实践分享
2017-02-17 三达不留点gpj CocoaChina 卡片本质上是一个简单的信息容器,信息量有限,但设计干净整洁.现如今,在保证界面具有优秀可用性的同时,卡片式的设计甚至成为了平衡界面美学的默 ...
- 在微服务架构下基于 Prometheus 构建一体化监控平台的最佳实践
欢迎关注方志朋的博客,回复"666"获面试宝典 随着 Prometheus 逐渐成为云原生时代的可观测事实标准,那么今天为大家带来在微服务架构下基于 Prometheus 构建一体 ...
- 基于 react, redux 最佳实践构建的 2048
前段时间 React license 的问题闹的沸沸扬扬,搞得 React 社区人心惶惶,好在最终 React 团队听取了社区意见把 license 换成了 MIT.不管 React license ...
- 调优 DB2 UDB v8.1 及其数据库的最佳实践-IBM developerWorks
http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/dm-0404mcarthur/#sqltuning 级别: 初级 ...
- 日志管理最佳实践:成功的六要诀【解读版】
合适的日志管理工具能够大幅减轻管理企业系统日志数据的负担.但是,除非组织为这个工具投入必要的时间和精力,否则再好的工具也会很快变成一个差劲的工具.Diana Kelley为大家提供了6个确保成功的日志 ...
最新文章
- 32如何向Linux转,linux使用技巧32则
- RRC Connection Reconfiguration
- 【JavaSE】day03_Date、SimpleDateFormat、Calendar、Collection
- CodeForces 396C 树状数组 + DFS
- android软件更新模块实现的技术和方法,Android APK签名原理及方法
- 新浪微博-企业微博运营手册
- Centos7下安装redis
- kotlin访问控制符可见性
- jsf tree组件_JSF UI组件标签属性示例教程
- Maven学习(四)Maven 命令行选项
- linux目录分配独立磁盘空间,Linux 分配/home的磁盘空间给根目录
- php iterator接口,PHP预定义接口之Iterator(迭代器)接口演示
- 企业管理软件平台架构内幕揭秘
- 矩阵的迹tr运算及矩阵求导公式
- JDK8与JDK11
- 神经网络算法的基本原理,神经网络算法都有哪些
- python读写excel文件(xls格式)
- matlab画图选项表+标记点大小调整+线段图如何绘制
- 泛函极值问题与变分法
- Android——一个简单的闹钟APP