当前位置: 首页 > news >正文

wordpress学校站模板国外网站seo

wordpress学校站模板,国外网站seo,万源网站建设,外贸销售怎么找客户yii2布局文件里有很多函数,你是否研究过他们都是干嘛用的?这篇文章告诉你~我们以安装完yii2程序后默认的布局为例说明 // app/views/layouts/main.php/* var $this \yii\web\View */ /* var $content string */use yii\helpers\Html; use yii\widgets\Br…

yii2布局文件里有很多函数,你是否研究过他们都是干嘛用的?这篇文章告诉你~

我们以安装完yii2程序后默认的布局为例说明

// @app/views/layouts/main.php/* @var $this \yii\web\View */
/* @var $content string */use yii\helpers\Html;
use yii\widgets\Breadcrumbs;
use app\assets\AppAsset;AppAsset::register($this);
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head><meta charset="<?= Yii::$app->charset ?>"><meta name="viewport" content="width=device-width, initial-scale=1"><?= Html::csrfMetaTags() ?><title><?= Html::encode($this->title) ?></title><?php $this->head() ?>
</head>
<body>
<?php $this->beginBody() ?><div class="wrap"><div class="container"><?= $content ?></div>
</div><footer class="footer"><div class="container"><p class="pull-left">© My Company <?= date('Y') ?></p><p class="pull-right"><?= Yii::powered() ?></p></div>
</footer><?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>

首先要说的是,布局其实就是视图,一种特殊的视图而已,所以我们明说布局函数,实质在说视图类View。

我就是我 $this

既然是一种特殊的视图,所以布局里面的 $this 对象其实就是当前视图本身,这在默认布局的注释里已经说明。

/* @var $this \yii\web\View */
/* @var $content string */

所以我建议你在阅读本文的时候,打开yiiwebView源代码同步进行。

写啥是啥 $content

这是在布局文件里除了 $this 外的第二个变量,我们都知道布局就像一个容器一样将基础架构先画出来,然后想用此结构的视图直接使用就可以了,那么 $content 就是使用此布局的视图自己的内容。

开山函数 beginPage 和 endPage

记住,所有的HTML我们都应该包含在 beginPage 和 endPage 函数之间,它们代表一个页面的开始和结束。

之外它们还分别触发了下面的两个事件

View::EVENT_BEGIN_PAGE
View::EVENT_END_PAGE

如果你想统计视图页面内代码的渲染时间,可以在这两个事件上做做手脚。当然,endPage的作用要更加大,后面会单独拿出来说明。

资源在哪我说的算 head()

确切的说,该函数只是告诉了yii要将资源文件(比如js和css)放到页面的哪里,一般它在head标签内,如果你将它移到其他地方,你会发现将来页面的js文件和css文件等也转移了。

head有啥我来做 renderHeadHtml()

从名字你就可以知道,它负责将头部的一些代码渲染出来,比如js和css等文件的具体html标签,具体放哪?那必须是放到head()函数里指定的位置了,另外,这是一个protected类型方法,你不要想着能直接->就调用它,没门,它仅仅为View类的其他方法服务。

beginBody 和 endBody

这两个函数和 beginPage 和 endPage 有雷同的地方,就是做了两个标记,代表body的开始和结束,作为位置标签,另外也触发了两个事件

View::EVENT_BEGIN_BODY
View::EVENT_END_BODY

当然 endBody 和 endPage 一样,还有其他职责,放到最后说,你先了解他们代表开始和结束,同时触发事件即可。

中场总结

上面说了 head、beginBody、endBody 都具有标签的作用,View为其设计了3个常量作为代表,分别如下

PH_HEAD // $this->head()
PH_BODY_BEGIN // $this->beginBody()
PH_BODY_END // $this->endBody

根据我们上面的了解,先画一个图出来,看看布局的可视化样子。

// 我是图
$this->beginPage()
- <html>
-- <head>
$this->head() // PH_HEAD
-- </head>
-- <body>
$this->beginBody() // PH_BODY_BEGIN
$content
$this->endBody() // PH_BODY_END
-- </body>
- </html>
$this->endPage()

renderBodyBeginHtml 和 renderBodyEndHtml 函数

上面我们知道有一个叫做 renderHeadHtml 方法负责往 PH_HEAD 位置放资源文件,那么PH_BODY_BEGIN和PH_BODY_END 也应该同类待遇,renderBodyBeginHtml和renderBodyEndHtml就是干这个的。

而从代码来看 renderBodyBeginHtml 和 renderBodyEndHtml 做的事情和 renderHeadHtml 差不多,都是资源的具体代码话,你是否记得我们在兄弟连时候有一节( http://nai8.me/course-video.h... )说过关于asset资源类位置的问题(指定资源在页面的上部还是下部),对,renderBodyBeginHtml、renderBodyEndHtml 等就是做这个的。

我们分条说下

  • renderBodyBeginHtml渲染的是位置为 POS_BEGIN 的js文件

  • renderBodyEndHtml渲染的是位置为 POS_END、POS_READY、POS_LOAD的js文件

  • renderHeadHtml渲染的是位置为POS_HEAD的js文件和所有css文件(无位置功能)以及一些head的metaTags。

现在你明白了吧,到此刻,你知道了有三个函数负责三个位置的代码渲染,而这些渲染其实就是资源的代码实现。

再说endPage

到现在,万事俱备,但是东风在哪里?它就是endPage
看一部分endPage的源代码我们

echo strtr($content, [self::PH_HEAD => $this->renderHeadHtml(),self::PH_BODY_BEGIN => $this->renderBodyBeginHtml(),self::PH_BODY_END => $this->renderBodyEndHtml($ajaxMode),
]);

endPage活生生的实现了代码和位置之间的替换,说白了就是字符串替换。。。

当然,在View类里还有一些小方法,比如registerJs()、clear()等等,阿北相信当你了解了布局(视图)形成的流程后,这些很容易看懂,如果还不懂,请留言此贴问。

最后一个例子

如果我们把最后相应给客户的页面比作一栋大楼。那么看看角色的分类

  • 布局 代表大楼图纸(代表着一个框架)

  • 资源类 代表购物清单

  • View的三个render函数 代表具体的建筑工人,采购资源类,并放到大楼里。

  • endPage函数,就是售楼许可证,保证所有资源都到位。

  • 使用布局的视图 就是人,入驻大楼,没有视图的布局都是纸老虎。

(完)
更多yii2干货 http://nai8.me

http://www.lbrq.cn/news/2520127.html

相关文章:

  • 哪个云服务器便宜又好seo搜索引擎优化岗位要求
  • 网站建设进度说明爱站查询工具
  • 建立个人博客网站搜索引擎优化的例子
  • 车公庙做网站盘古搜索
  • 北京市人大网站建设杭州seo营销
  • 小语种网站怎么做曼联vs恩波利比分
  • 个人简介网站html代码网店运营与管理
  • 如何建设网站与域名长沙seo优化首选
  • 网站开发 视频存在哪合肥百度推广优化排名
  • 网站建设中的英文百度快速排名点击器
  • 商业网站建设案例全球搜钻是什么公司
  • wordpress新用户网站优化培训
  • wordpress 数据库名称域名查询seo
  • 济南网站建设企业网页设计html代码大全
  • 长春网站建设致电吉网传媒优上海网站排名优化怎么做
  • 手机网站模板html5网站为什么要seo?
  • 辅助购卡网站怎么做百度推广怎么使用教程
  • 软装设计培训班哪家好seo专员是什么职位
  • b2b是什么意思啊百科成都关键词seo推广平台
  • 云服务器建设网站qq群引流推广平台
  • 电商小程序开发平台小学生班级优化大师
  • 比较好的平面设计网站新闻发稿
  • 网站的建设项目是什么意思semi认证
  • 6.网站开发流程是什么酒吧营销用什么软件找客源
  • 阿里云网站建设一次付费百度竞价客服
  • 哪些做园林的网站人民日报客户端
  • 网站首页面房地产销售怎么找客户
  • 商城网站管理系统上海互联网公司排名
  • 网站开发导航开一个免费网站
  • 怎样使用自己的电脑做网站选择宁波seo优化公司
  • [硬件电路-106]:模拟电路 - 电路为什么会出现不同的频率特性?元件频率依赖性、信号传输路径、电路拓扑结构、外部因素
  • LLM 模型部署难题的技术突破:从轻量化到分布式推理的全栈解决方案
  • SpringBoot 整合 自定义MongoDB
  • IO复用实现并发服务器
  • leaflet中绘制轨迹线的大量轨迹点,解决大量 marker 绑定 tooltip 同时显示导致的性能问题
  • Ubuntu上开通Samba网络共享