现在主流的MVC框架网站中,控制器接收到页面请求后,通常会调用相应的模板,模板经过渲染之后,内容返回给前台页面,如下面ThinkPHP的一个控制器:
shop/home/controller/UserController.class.php
<?php
namespace Home\Controller;
use Think\Controller;
class UserController extends Controller {
//登陆事件,function默认public,所以不用加public也行
function login(){
//调用模板
$this -> display();
}
function register(){
echo 'registering';
}
}
上面的display()继承自Controller类,调用时会调用shop/home/view/user/login.html 文件返回给前端,如果该文件不存在,会产生错误。
login.html等模板文件,与项目进行整合步骤:
1.引入静态代码,也就是把login.html文件,放入shop/home/view/user/ 目录
2.引入css、image、js
a. 以上3样东西,浏览器需要发送单独的http请求
b. 引入css的时候,以User控制器标志作为当前目录,显然不行
以死的绝对路径不利于后期维护,例如其中目录有修改,就要全部都修改,有很多 重复劳动
优化后:利用常量把路径给定义好,后期只维护一个常量即可
3.在入口文件地方把css、img、js的路径设置为常量
4.在模板中通过常量获得具体的css、img等文件信息(所有模板文件都要进行替换)
5.把css文件本身的图片路径设置正确(css文件中引用图片的)
在网站的index.php中定义常量,以保证所有目录都可以用
<?php
//定义css、img、js常量
define(“SITE_URL”,”http://web.1116.com”);
define(“CSS_URL”,SITE_URL.”shop/public/css/“);
define(“IMG_URL”,SITE_URL.”shop/public/img/")
define(“JS_URL”,SITE_URL.”shop/public/js/“)
模板html中使用方式:
<link href="{$Think.const.CSSURL}style.css” rel=“stylesheet” type=“text/css” />