TP模板常量_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > TP模板常量

TP模板常量

 2018/4/2 2:11:39  青春..荒唐  程序员俱乐部  我要评论(0)
  • 摘要:【前言】本文总结下TP模板常量【概论】简单理解:具体用法和选择比较随意,怎么简单怎么来。只要理解了每个常量的含义,就可以运用自如。例如:在删除操作模板加入删除方法路径,可以从__PUBLIC__域名后开始,也可以找__CONTROLLER__控制器【主体】(1)由来:实际开发中,在引入css、js、图片等文件时,往往需要些一些复杂的路径。这时可以考虑用模板常量替换机制,将复杂路径简单化(2)ThinkPHP里系统默认提供了一下几个常用的模板常量(因为是模板常量,所以只能在模板中使用
  • 标签:模板

【前言】

? ?本文总结下TP模板常量

?

【概论】

? ?简单理解:具体用法和选择比较随意,怎么简单怎么来。只要理解了每个常量的含义,就可以运用自如。

? ?例如:在caozuo.html" target="_blank">删除操作模板加入删除方法路径,可以从__PUBLIC__域名后开始,也可以找__CONTROLLER__控制器

?

【主体】

(1)由来:实际开发中,在引入css、js、图片等文件时,往往需要些一些复杂的路径。这时可以考虑用模板常量替换机制,将复杂路径简单化

?

(2)ThinkPHP里系统默认提供了一下几个常用的模板常量(因为是模板常量,所以只能在模板中使用,不能在控制器里使用)

class="php">__MODULE__:(模块/组件),输出到分组,表示从域名后开始到分组名结束的路由。/index.php/Admin
__CONTROLLER__:(控制),输出到控制器,/index.php/Admin/Test
__ACTION__:(方法),输出到方法,/index.php/Admin/Test/test1
__PUBLIC__:表示从域名后开始找,站点根目录下Public目录路由,/public
__SELF__:当前路由,从域名后开始到路由结束,与__ACTION__区别:
/index.php/Admin/Test/test1/id=10,具体输出不同。当没有参数时,__SELF__和__ACTION__相同

?

?

(3)模板常量来源?

? ? ? 这里模板常量是通过模板内容替换机制来实现的,并非是常量的定义。所以模板常量并非是常量,而是字符串。

? ? ? 替换机制可以查看行为文件ThinkPHP/Library/Behavior/ContentReplace.Behaviour.class.php

? ? ? 拓展:查看后即可得出行为文件命名,文件名.Behaviour.class.php

/**
     * 模板内容替换
     * @access protected
     * @param string $content 模板内容
     * @return string
     */
    protected function templateContentReplace($content) {
        // 系统默认的特殊变量替换
        $replace =  array(
            '__ROOT__'      =>  __ROOT__,       // 当前网站地址
            '__APP__'       =>  __APP__,        // 当前应用地址
            '__MODULE__'    =>  __MODULE__,
            '__ACTION__'    =>  __ACTION__,     // 当前操作地址
            '__SELF__'      =>  htmlentities(__SELF__),       // 当前页面地址
            '__CONTROLLER__'=>  __CONTROLLER__,
            '__URL__'       =>  __CONTROLLER__,
            '__PUBLIC__'    =>  __ROOT__.'/Public',// 站点公共目录
        );
        // 允许用户自定义模板的字符串替换注意:行为文件是系统自带的,一般不建议去改动
        if(is_array(C('TMPL_PARSE_STRING')) )
            $replace =  array_merge($replace,C('TMPL_PARSE_STRING'));
        $content = str_replace(array_keys($replace),array_values($replace),$content);
        //这步便是通过模板内容替换机制str_replace
        return $content;

其模板常量的核心就是字符串的替换str_replace

?

(4)自定义模板常量

为了后期使用方便,可以在配置文件里定义一个自定义的模板常量

配置项为TMPL_PARSE_STRING

注意:开发时尽量不要修改系统配置文件,因为系统配置文件的作用范围十分广泛。可以将需要修改的配置项,在分组、应用级别的配置文件里去定义,不要直接在系统文件里修改。

例如:放到应用配置文件Common/Conf/config.php

<?php
return array(
    //'配置项'=>'配置值'
    //模板常量
    'TMPL_PARSE_STRING' => array(
        // __ROOT__.'/Public'站点公共目录,即根目录下public
        '__ADMIN__' => __ROOT__.'/Public/Admin',
       //定义好之后,可以通过__ADMIN__来访问静态资源路径
    )
);

?验证:模板输入__ADMIN__来验证,输出结果为/Public/Admin,表示验证成功

?

?

?

?

【注意】

? ?①模板常量只能在模板文件中使用,不能用到js文件里去。除非将js移到模板文件。或者在js文件里,从域名后开始引入路径:域名/入口文件/分组名/控制器名/方法名/[参数]/[参数值]

?

?

?

?

?

?

?

?

?

.

上一篇: U方法总结 下一篇: TP回顾
发表评论
用户名: 匿名