1、 目录,自动生成,结构熟悉。
2、 配置(php以数组形式,最好大写)
加载顺序:惯例—应用配置—模块配置—动态配置
惯例配置:convention.php
复制数据库部分到模块config.php覆盖,在控制器中用C函数和dump将配置读取出来可看到,数据库的配置已经添加上去。
读取:$model = C('URL_MODEL');
配置:C('DATA_CACHE_TIME',60);
还可以用LOAD_EXT_CONFIG添加当前模块自定义配置文件。
'LOAD_EXT_CONFIG' => 'user,db',会自动加载相应目录下自定义的user.php和db.php配置文件。
3、 模块化设计
典型URL访问规则:
http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...]
Common模块是一个特殊的模块,是应用的公共模块,访问所有的模块之前都会首先加载公共模块下面的配置文件( Conf/config.php )和公共函数文件( Common/function.php )。但Common模块本身不能通过URL直接访问,公共模块的其他文件则可以被其他模块继承或者调用。
自动生成模块目录:
define('BIND_MODULE','Admin');生成Admin模块的目录,并生成一个默认的控制器类 Admin\Controller\IndexController。此时Admin变成默认模块!(绑定了,而且原来的Home访问不了)。已经默认绑定了Index控制器:define('BIND_CONTROLLER','Index');
如果需要生成更多的控制器类,可以定义 BUILD_CONTROLLER_LIST 常量
define('BIND_MODULE','Admin');
define('BUILD_CONTROLLER_LIST','Index,User,Menu');
会生成三个控制器类
Admin\Controller\IndexController
Admin\Controller\UserController
Admin\Controller\MenuController
生成模型类
define('BUILD_MODEL_LIST','User,Menu');
设置访问列表
'MODULE_ALLOW_LIST' =>array('Home','Admin','User'),
'DEFAULT_MODULE' => 'Home',
4、 控制器
继承自Controller,有个public的控制器操作方法。
可以用_before_**和_after_**定义前操作和后操作。
可以定义空控制器EmptyController中的_empty()空方法,作为一些错误处理页面。url为空。
可以绑定到类,要配置ACTION_BIND_CLASS为true。
Action参数绑定,配置'URL_PARAMS_BIND'=> true,URL:
http://serverName/index.php/Home/Blog/read/id/5
有多个参数,顺序无所谓:
http://serverName/index.php/Home/Blog/archive/month/11/year/2013
URL四种模式:URL_MODEL
0普通(问号+参数对,用&连接)
1PathInfo(文件夹路径,默认该模式)
2ReWrite(隐藏应用入口文件)
3兼容(前三种)
U函数可生成模式匹配的URL
redict实现跳转,还有success、error内置的。
success和error方法的第一个参数表示提示信息,第二个参数表示跳转地址,第三个参数是跳转时间(单位为秒)。默认的设置模板都是:
THINK_PATH . 'Tpl/dispatch_jump.tpl',
如果要自定义:'TMPL_ACTION_SUCCESS' => 'Public:success',
public function index(){
$this->success('新增成功', '/TPfull/index.php/Admin/Index/index',3);
}
获取输入变量用I函数进行过滤,安全读入。
echo I('get.name'); // 相当于$_GET['name']
param类型支持自动判断当前请求类型,是I函数默认获取的变量类型,因此事实上param变量类型的写法可以简化为:
I('id'); // 等同于 I('param.id')
I('post.emai