模板的外衣
布局文件
在不指定布局文件时,使用默认布局 templates/default/default.layer.php
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title><?= $title ?? '' ?></title>
<meta name="Keywords" content="<?= $keywords ?? ''; ?>"/>
<meta name="Description" content="<?= $description ?? ''; ?>"/>
<link href="<?= $this->res('libs/bootstrap/3.3.5/css/bootstrap.min.css') ?>" rel="stylesheet">
<script src="<?= $this->res('libs/jquery/1.11.1/jquery.min.js') ?>"></script>
</head>
<body>
<?= $content ?? '' ?>
<script src="<?= $this->res('libs/bootstrap/3.3.5/js/bootstrap.min.js') ?>"></script>
</body>
</html>
布局文件可以当作是最外层的模板,模板通过组合来复用,使用嵌套来降低数据渲染的复杂度,模板的本质是把PHP代码 include
到视图控制器类中,
在模板中可以访问类中定义的所有方法,拥有很高的性能和扩展能力。
布局文件中的变量
布局文件中默认定义了4个内置变量
$title
$keywords
$description
控制页面标题,关键词和描述
$content
特殊变量,视图控制器方法输出结果保存到$content
变量, 在 include
布局文件时一起导入到布局文件中
SEO相关设置
Web开发SEO是不可忽略的,在视图控制器方法中使用 $this->set()
方法设置页面标题、关键词等
$this->set('title', 'hi');
$this->set('keywords', 'hi - keywords');
$this->set('description', 'hi - description');
$this->renderTpl('hello/index', $data);
自定义布局
在 web\templates
目录下新建 simple.layer.php
布局文件
<h1><?= $content ?? '' ?></h1>
然后在视图控制器的方法中指定 layer
$this->set('layer', 'simple');
$this->renderTpl('hello/index', $data);
最简单的布局文件仅需要输出 $content
变量
不使用布局文件
在某些时候,比如AJAX请求中返回html片段,仅需要返回模板内容,可以指定不加载布局文件
$this->set('load_layer', false);