ThinkPHP 控制器调用模板的流程和项目模板部署步骤

Wesley13
• 阅读 397

现在主流的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” />
点赞
收藏
评论区
推荐文章
技术小男生 技术小男生
2个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi /etc/profile2:按字母键i进入编辑模式,在最底部添加内容: JAVAHOME/opt/jdk1.8.0152 CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jar PATH$JAVAHOME/bin:$PATH3:生效配置
光头强的博客 光头强的博客
2个月前
Java面向对象试题
1、 请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。 创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现 接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿 吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
刚刚好 刚刚好
2个月前
css问题
1、 在IOS中图片不显示(给图片加了圆角或者img没有父级) <div<img src""/</div div {width: 20px; height: 20px; borderradius: 20px; overflow: h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录 问题 用navicat导入数据时,报错: 原因这是因为当前的MySQL不支持datetime为0的情况。 解决修改sql\mode: sql\mode:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
晴空闲云 晴空闲云
2个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。 盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
Stella981 Stella981
1年前
PHP中的stdClass是什么?
请定义什么是`stdClass` 。 * * * ### #1楼 stdClass是另一个很棒的PHP功能。 您可以创建一个匿名PHP类。 让我们来看一个例子。 $page=new stdClass(); $page->name='Home'; $page->status=1; 现在,您认为您还有另一个类,该类将使
Wesley13 Wesley13
1年前
thinkphp3.2.3模板渲染支持三元表达式
thinkphp3.2.3模板渲染支持三元表达式 {$status?'正常':'错误'} {$info['status']?$info['msg']:$info['error']} 注意:三元运算符中暂时不支持点语法。 如下:            <div class="modal hide fade" id='myModa
Wesley13 Wesley13
1年前
cobol学习之十数据库的增删改查模板
这次连接数据库使用的是ODBC连接access数据库,里面主要是一个增删改查的模板备份,方便以后查询。 000001 IDENTIFICATION DIVISION. 000002 PROGRAM-ID. SAMPLEDB2. 00
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序 select * from table_name order id desc; 2.按照指定(多个)字段排序 select * from table_name order id desc,status desc; 3.按照指定字段和规则排序 selec
Wesley13 Wesley13
1年前
PHP中的NOW()函数
是否有一个PHP函数以与MySQL函数`NOW()`相同的格式返回日期和时间? 我知道如何使用`date()`做到这一点,但是我问是否有一个仅用于此的函数。 例如,返回: 2009-12-01 00:00:00 * * * ### #1楼 使用此功能: function getDatetimeNow() {