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

现在主流的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” />
时间: 2024-12-10 09:50:47

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

CI控制器调用内部方法并载入相应模板的做法

当我打开链接:http://localhost/3g/index/open/a/b?from=timeline后,判断链接中的from是否等于timeline,如果等于timeline,那么就调用控制器内部的timeline方法,并载入timeline.php这个模板. class Index extends CI_Controller { function __construct() { parent::__construct(); } public function open($a=0,$b

DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版及制作Visual Studio C#项目模板文件详解

关于 DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版---------------------------------------------------------基于 官方原版的安装包 + http://www.cnblogs.com/tracky 提供的补丁DLL制作而成.安装之后,直接就可以用了.省心省事.不必再单独的打一次补丁包了.本安装包和补丁包一样都删除了官方自带

thinkphp A()、R()方法不能跨项目调用与当前action名称相同的控制器的原因

thinkphp 使用A()和R()方法跨项目调用时,不能调用另一个项目中与当前所在action类名称相同的action类. 以下是common.PHP,import()方法308-312行 [php] view plain copy $classfile = $baseUrl . $class . $ext; if (!class_exists(basename($class),false)) { // 如果类不存在 则导入类库文件 return require_cache($classfil

ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程

ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/show/ 所执行的流程进行详细的分析,用户的URL访问首先是定位到了My项目的index.php 入口文件(注意:如果使用了URL_REWRITE,可能index.php已经被隐藏了),项目的入口文件所做的其实是实例化一个App应用实例,并且执行这个应用. 1.加载公共入口文件 在实例化App类之前,我们需要

ThinkPHP 3.2.2跨控制器调用方法

 所谓跨控制器调用,指的是在一个控制器中调用另一个控制器的某个方法.在ThinkPHP中有三种方式实现跨控制器调用: 直接实例化: A()函数实例化; R()函数实例化. (1)直接实例化  直接实例化就是通过new关键字实例化相关控制器,例如: 1 $goods = new GoodsController() //直接实例化Goods控制器类 2 $info = $goods->info(); //调用Goods控制器类的info()方法 需要注意的是,如果实例化的控制器与当前控制器不在同一目

ThinkPHP跨控制器调用方法

跨控制器调用方法 1. 先造对象,再调用里面的方法 $sc=new \Home\Controller\IndexController();  用绝对路径找echo $sc->ShuChu(); 2. $sc=new IndexController();  用相对路径 echo $sc->ShuChu(); 还可以使用thingkphp中的快捷方法 1. $sc=A("Index");      使用TP框架的快捷方法A来创建控制器对象  ()内直接写控制器名 [跨模块调用]

linux驱动开发重点关注内容--摘自《嵌入式Linux驱动模板精讲与项目实践》

本文摘自本人拙著 <嵌入式Linux驱动模板精讲与项目实践> 初步看起来Linux设备驱动开发涉及内容非常多,而须要实现驱动的设备千差万别.事实上做一段时间驱动之后回首看来主要就是下面几点: (1)对驱动进行分类.先归纳为哪个类型的驱动.归类正确再利用内核提供的子系统进行开发,往往会发现事实上非常多通用的事情内核已经帮我们做了,一个优秀的驱动project师应该最大程度上利用内核的资源.内核已经实现的毕竟稳定性强.可移植性高. (2)找到内核的提供的子系统.接下来就是要制作该子系统对该类设备提

thinkphp 控制器定义

控制器和操作 一般来说,ThinkPHP的控制器是一个类,而操作则是控制器类的一个公共方法. 下面就是一个典型的控制器类的定义: <?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function hello(){ echo 'hello,thinkphp!'; } } Home\IndexController类就代表了Home模块下的I

Vue.js项目模板搭建

前言 从今年(2017年)年初起,我们团队开始引入「Vue.js」开发移动端的产品.作为团队的领头人,我的首要任务就是设计 整体的架构 .一个良好的架构必定是具备丰富的开发经验后才能搭建出来的.虽然我有多年的前端开发经验,但就「Vue.js」来说,仍然是个新手.所幸「Vue.js」有一个配套工具「Vue-CLI」,它提供了一些比较成熟的项目模板,很大程度上降低了上手的难度.然而,很多具体的问题还是要自己思考和解决的. 项目划分 我们公司的H5产品大部分是嵌套在手机客户端里面的页面.每个项目的功能