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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络技巧:无线路由器越用越慢的解决方法

目录 01 ​​​​​​​路由器越用越慢很平常 02 国区设置不要乱用 03 很容易被遗忘的IPv6设置 04 学会自我检查掉线问题 05 番外篇&#xff1a;测试自己的网速 “耳机、音箱通过一定时间的煲机&#xff0c;表现效果会变好&#xff0c;可为何家里WiFi网络却老是给人越用越慢、越…

Mac软件:15个提升办公效率的软件

目录 1.解压软件&#xff1a;RAR Extractor - The Unarchiver Pro 2.实用清理软件&#xff1a;CleanMyMac X 3.水族屏保软件:Desktop Aquarium Wallpaper‪s 4.桌面图标隐藏工具&#xff1a;Desktop Curtain 5.剪贴板工具&#xff1a;Paste 6.快捷键查看软件&#xff1a;Cheats…

乐观锁介绍

1.乐观锁介绍 乐观锁&#xff08; Optimistic Locking &#xff09; 相对悲观锁而言&#xff0c;乐观锁假设认为数据一般情况下不会造成冲突&#xff0c;所以在数据进行提交更新的时候&#xff0c;才会正式对数据的冲突与否进行检测&#xff0c;如果发现冲突了&#xff0c;则让…

从0开始学习 GitHub 系列之「03.Git 速成」

前面的 GitHub 系列文章介绍过&#xff0c;GitHub 是基于 Git 的&#xff0c;所以也就意味着 Git 是基础&#xff0c;如果你不会 Git &#xff0c;那么接下来你完全继续不下去&#xff0c;所以今天的教程就来说说 Git &#xff0c;当然关于 Git 的知识单凭一篇文章肯定说不完的…

linux看缺省的编译器,修改Linux系统默认编辑器

pip和requests模块的安装1.配置python的环境变量 在path中加入pyhton的环境变量,如我的是E:\Python27 2. 如果没有pip,一个帮助软件管理的东东(现在的版本一般有,若有跳到3) 去https:// ...sp&lowbar;who&lowbar;lockUSE MyDataBase GO /****** Object: StoredProcedur…

Spring系列(一):Spring相关知识介绍笔记

目录 1、Srping概念 2、Spring原理 2.1 控制反转(Inversion of control)&#xff08;IOC&#xff09; 2.2 面向切面编程(Aspect-Oriented Programming)&#xff08;AOP&#xff09; 3、Spring框架结构 4、Srping生命周期 4、Srping有什么优势&#xff1f; 4.1、非侵入式设计 4.…

SDUT 3400 数据结构实验之排序三:bucket sort

数据结构实验之排序三&#xff1a;bucket sort Time Limit: 150MS Memory Limit: 65536KBSubmit StatisticProblem Description 根据人口普查结果&#xff0c;知道目前淄博市大约500万人口&#xff0c;你的任务是帮助人口普查办公室按年龄递增的顺序输出每个年龄有多少人&#…

nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException(Spring循环依赖问题)

1:问题 最近启动项目时候&#xff0c;遇到如下报错 nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name stockReceiptManager: Bean with name stockReceiptManager has been injected the bean. Thi…

linux分区设置大小,Linux调整磁盘分区大小

Resize the disk (Linux调整磁盘分区大小)Resize the partition. Run parted: $ partedShow the partition list: (parted) printThere should be two partitions; 1 should be a boot partition, about 64MB; the second should be the main partition, about 3.6GSome Disk C…

电脑技巧:盘点常用的Win组合快捷键

今天给大家继续分享电脑使用技巧&#xff0c;给大家介绍一下有哪些常用Win组合快捷键&#xff0c;希望可以对大家的日常办公提高帮助&#xff01; 1、WinE&#xff1a;打开我的电脑 超级实用的一个组合键&#xff0c;不论你当前在操作什么&#xff0c;只要按下这个组合键&#…

简单正则替换

var reganew RegExp(" ","g"); //创建正则RegExp对象 ntrstrntrstr.replace(rega,""); var regbnew RegExp(" ","g"); //创建正则RegExp对象 ntrstrntrstr.replace(regb,""); var regcnew Reg…

电脑技巧:电脑安装操作系统、重装系统常见的问题解决方法

目录 1、提示权限不足 2、添加PE开机引导菜单失败 3、磁盘格式错误 4、除系统盘外&#xff0c;未找到任何其他非系统磁盘分区 5、计算机意外地重新启动或遇到错误 6、windows无法完成安装 7、U盘安装系统时出现如下图错误 8、下载速度慢、卡住 重装系统现在也不是什么难事&…

linux开发板上程序如何调试,linux开发板调试典型方法

tftpdsudo apt-get install tftpd openbsd-inetd将/etc/inetd.conf中的最后一个路径设置成你希望让客户端存取文件的目录例如下面的“/tftpboot”(记得开放该目录的读写权限)&#xff1a;“tftp dgram udp wait nobody /usr/sbin/t…

电脑技巧:Win10电脑卡顿解决小技巧,非常实用

目录 1、及时关闭不常用的后台进程 2、建议打开GPU硬件加速功能 3、及时更新升级硬件驱动 4、适当降低Windows动画特效 5、开启Windows自带的游戏模式 电脑用的时间越久就会越卡顿了&#xff0c;今天小编给大家分享五个小技巧&#xff0c;来解决电脑卡顿的问题&#xff0c;有需…

线程其实就是一个个指令组成的,当这个线程内的指令全部执行完了,那么这个线程也就执行结束了

线程其实就是一个个指令组成的&#xff0c;当这个线程内的指令全部执行完了&#xff0c;那么这个线程也就执行结束了

page,client,offset区别

offset:相对于当前“盒子”的距离 &#xff0c;与滚动条无关 client:相对于可视区域的距离&#xff0c;与滚动条无关 page:相对于整个页面的距离&#xff0c;与滚动条有关 示例代码&#xff1a; 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 …

linux netbeans 中文乱码,浅谈Linux Netbeans字体反锯齿处理

用的Linux发行版是Ubuntu8.04&#xff0c;如果使用源里面的JDK一切都很简单(现在源里的版本是1.6u6)&#xff0c;JDK6开始支持反锯齿。装完Netbeans你就会惊喜的发现&#xff0c;仿原生GUI的界面(GTK&#xff0b;)上的文字是反锯齿的&#xff0c;但是编辑器里面的文字是锯齿的&…

Win10软件:推荐两款Windows操作系统下的远程软件,值得收藏!

远程控制软件是程序员日常必备的工具&#xff0c;现场市面上有微软自带的远程连接工具、向日葵、teamviewer等远程控制软件。他们都有一个共同的缺点&#xff0c;无法针对远程连接设置分组、别名。大多数情况下&#xff0c;我们可能需要连接十几个甚至几十个Windows远程服务器。…

开发机多用户 xdebug 远程调试 PhpStorm

在公司都用的远程开发机开发&#xff0c;每次有错误调试就得dd(xxx)然后保存真是&#xff0c;让我在本地开发用惯xdebug的情何以堪&#xff0c;所以有了下文。 1.安装配置xdebug 直接使用pecl安装即可# pecl install xdebug 然后写xdebug配置&#xff0c;下面是我的设置(具体扩…