视图的创建:
视图文件需要建立在views文件夹中,并包含在与控制器同名的文件夹名字中:view/控制器名/视图名
控制器中加载视图文件:
$this->renderPartial(“视图文件名”); 不会加载布局文件;
$this->render(“视图文件名”); 会加载默认的布局文件;
<?php namespace frontend\controllers; use yii\web\Controller; class CkController extends Controller { public function actionIndex() { return $this->renderPartial('index'); } }
视图传递数据:
控制器中传递数据:
视图中接收数据:
在advanced/frontend/views/ck/ 创建ck控制器同名的文件夹,在ck文件夹下面创建index.php视图文件
<h1><?= $view_name_str; ?></h1> <h1><?= $view_test_arr[0]; ?></h1>
视图传递数据安全性:
<?php //必须导入命名空间 ?> <h1><?php echo ($view_name_str);?></h1> <h1><?php echo $view_name_str; ?></h1>
布局文件:
布局文件创建在: views/layouts/文件夹下
选择布局的方式
方案1:控制器内成员变量
public $layout = false; //不使用布局 public $layout = "main"; //设置使用的布局文件
方案2:控制器成员方法内
$this->layout = false; //不使用布局 $this->layout = "main"; //设置使用的布局文件
方案3:视图中选择布局
$this->context->layout = false; //不使用布局 $this->context->layout = 'main'; //设置使用的布局文件
控制器写法:
<?php namespace frontend\controllers; use yii\web\Controller; class CkController extends Controller { public $layout = false; //不使用布局 public function actionIndex() { return $this->render('index'); } }
布局文件载入:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <h1>hello common</h1> </body> </html>
视图中显示视图:
Ckcontroller控制器代码:
namespace frontend\controllers; use yii\web\Controller; class CkController extends Controller { //不使用布局 public function actionIndex() { return $this->render('index'); } }
在index视图中载入about视图,并向about视图传参:
index视图位置: advanced/frontend/views/ck/index.php <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <h1>hello index</h1> </body> </html>
在about视图中接收参数:
about视图位置: advanced/frontend/views/ck/about.php <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <h1>hello about</h1> <h1></h1> </body> </html>
视图之数据块:
视图中,定义数据块:
index视图位置: advanced/frontend/views/ck/index.php <h1>hello index</h1> <?php $this->beginBlock('block1'); ?> ...content of block1... <?php $this->endBlock(); ?>
布局文件中根据是否有数据块,显示数据块内容:
在布局文件main.php(advanced/frontend/views/layouts/index.php)中添加如下代码: <?php if (isset($this->blocks['block1'])): ?> <?= $this->blocks['block1'] ?> <?php else: ?> ... default content for block1 ... <?php endif; ?>
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn