使用布局
布局文件是视图控制器中输出内容的模板
创建布局文件
调用视图控制器的display()
方法时, 会制动加载模板文件夹根目录下的默认布局文件default.layer.php
, 一个简单HTML布局文件内容如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="Keywords" content="<?php echo isset($keywords) ? $keywords : "默认关键词"); ?>"/>
<meta name="Description" content="<?php echo isset($description) ? $description : '默认描述'; ?>"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?php echo isset($title)?$title:'默认标题' ?></title>
</head>
<body>
<?php echo isset($content)?$content:'' ?>
</body>
</html>
当执行视图控制器中的方法时, 视图控制器中的方法输出的内容会被赋值给布局文件中的变量$content
, 最后合并到布局文件中输出到客户端.
在布局文件中调用视图控制器中的方法
直接在布局文件中使用$this->action()
就可以调用视图控制器中的方法, 如下例
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="Keywords" content="<?php echo isset($keywords) ? $keywords : "默认关键词"); ?>"/>
<meta name="Description" content="<?php echo isset($description) ? $description : '默认描述'; ?>"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?php echo isset($title)?$title:'默认标题' ?></title>
<?php $this->loadRes() ?>
</head>
<body>
<?php echo isset($content)?$content:'' ?>
</body>
</html>
在视图控制器中添加loadRes()
方法, 就可以直接在视图控制器中调用了
为布局文件中的变量赋值
通过视图控制器更改网页标题, keywords,和description
namespace app\web\views;
use Cross\MVC\View;
class MainView extends View
{
function index($data = array())
{
$this->set(array(
'title' => 'hi',
'keywords' => 'crossphp',
'description' => '轻量高效php开发框架',
));
include $this->tpl("main/index");
}
}
布局文件中的所有变量均可以在方法中调用$this->set()
设置值. set()
方法参数为一个数组, 数组的key即为布局文件中的变量名.
控制资源文件
添加静态资源文件,如css,js等,需在layer中指定位置添加$this->loadRes()
方法
namespace app\web\views;
use Cross\MVC\View;
class MainView extends View
{
function index($data = array())
{
$this->addRes("css/style.css");
include $this->tpl("main/index");
}
}
>自定义app中的视图控制器基类的基类而不是直接继承CoreView
,这样更灵活易扩展.