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

首先,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方法,可写作:

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

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

你可能感兴趣的:(Yii2框架)