Yii2基础笔记(三):深入理解Yii2中的view

本文详细探讨了Yii2框架中的View组件,包括render方法的五种用法,如render、renderPartial等,以及view文件命名的多种格式。此外,还介绍了在view文件中如何引入JavaScript和CSS,如不同位置的注册以及加载顺序。在Yii2的view文件中,可以利用$this调用view对象的方法,实现类似controller的render操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,yii2 view在vendor/views中也是一个对象

一、render方法
任意一个controller都有5种render方法:
1.render(view文件名,待传递的参数数组);如:

`render('about',['num'=>5]) //表示带上num这个数据生成about.php页面,并将这个生成的结果当作content变量(字符串)传递到main.php布局文件中。在about.php文件中,可通过$num获取传递过来的参数`

2.renderPartical(view文件名,待传递的参数数组)//不使用布局文件
3.renderAjax(view文件名,代传递的参数数组); //显示完整的view,包括head body
4.renderContent(view文件名)
5.renderFile

注意:在controller的action中,1 = 2 + 3,即:
$this->render('about',['num'=>5])的作用相当于:

$content = $this->renderPartical('about',['num'=>5]);
$this->renderContent($content);

两个步骤的结果

二、view文件名可以写作如下格式:
1.‘about’ //ViewContextInterface接口返回的view名
2. @app/views/about.php //别名
3. //views/site/about.php //代表当前app下的views文件夹,属于根目录下的views
4. /views/site/about.php //代表当前module模块下的views
5. getViewFile //返回上次render调用的view文件目录

三、view文件中使用js 或 css:

$this->registerMetaTag($options);  
//$options的格式:数组如:[,name'=>'author','content'=>'Someletters']
$this->registerLinkTag($options);   //参数也是数组格式的link内容
$this->registerCss($css);  //参数是css代码,字符串格式
$this->registerCssFile($url);//参数是url地址
$this->registerJs($js,引入位置);//参数是js代码,字符串格式;

引入位置有以下几种:
POS_HEAD(head结束前);
POS_BIGIN(body开始处);
POS_END(body结束前);
POS_READY(包括到jquery中,表示文档加载后);
POS_LOAD(包括到jquery中,文档加载时);
通过View::POS_HEAD来书写该参数

$this->registerJsFile($url,依赖及位置参数数组); 
//参数是url地址 和一个数组如['denpends'=>['jquery.js','x.js'],'position'=>View::POS_HEAD],表示在jquery.js 和 x.js之后加载,位置在头部

生成顺序:meta –> link –> css file –> css code –> js file –> js code ;同类标签按加载的代码顺序生成;
注意:

$this->registerMetaTag($options,$key); 
$this->registerLinkTag($options,$key);

这两个方法,可以包含key参数(字符串),对于key相同的同种注册方法,后面加载的注册或覆盖前面加载的方法;

其中$this表示 yii\web\view对象,所以在view文件中,也可以使用render方法,可写作:

<?php echo $this->render('error',['name'=>'err','message'=>'出错了']); ?> 
//需要注意的是,view文件中调用view,不会调用布局文件,而只是渲染调用的新的view文件;

controller的所有render方法都是通过调用view对象的底层方法来实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值