`

TP模板常量

    博客分类:
  • PHP
PHP 
阅读更多

【前言】

   本文总结下TP模板常量

 

【概论】

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

   例如:在删除操作模板加入删除方法路径,可以从__PUBLIC__域名后开始,也可以找__CONTROLLER__控制器

 

【主体】

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

 

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

__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文件里,从域名后开始引入路径:域名/入口文件/分组名/控制器名/方法名/[参数]/[参数值]

 

 

 

 

 

 

 

 

 

.

分享到:
评论

相关推荐

    ThinkPHP系统常量

    ### ThinkPHP系统常量解析 #### 一、概述 在PHP开发领域,ThinkPHP作为一款优秀的轻量级框架,被广泛应用于Web应用的快速开发之中。为了更好地理解并利用ThinkPHP进行高效编程,掌握其内置的一些核心常量是十分...

    thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)

    这些常量定义了ThinkPHP框架和项目的目录结构,包括核心类库、扩展目录、第三方类库、模板目录等。它们以THINK_PATH和APP_PATH为基础,拼接出具体的路径。例如: - CORE_PATH:ThinkPHP的核心类库目录,位于THINK_...

    ThinkPHP中的系统常量和预定义常量集合

    在ThinkPHP框架中,系统常量和预定义常量扮演着关键角色,它们为开发者提供了便捷的全局访问点,用于获取框架和应用的各种路径、状态信息以及配置设置。以下是对这些常量的详细解释: 1. 系统常量: - THINK_PATH...

    TP5开发手册

    - **常量参考**:列出了框架内部使用的常量。 - **助手函数**:列举了一系列常用的助手函数。 - **升级指导**:给出了从旧版本升级到5.0版本的指导步骤。 - **更新日志**:记录了版本更新的历史记录。 综上所述,TP...

    Thinkphp模板没有解析直接原样输出的解决方法

    在ThinkPHP模板开发中,当尝试在模板中使用如`__ROOT__`、`__PUBLIC__`等系统定义的路径常量时,这些常量在模板渲染后被替换为实际的服务器路径,而不是保持原样输出。这使得开发者在某些特定场景下无法直接显示这些...

    tp开发资源

    本资源包“tp开发资源”显然专注于ThinkPHP框架的开发方式、模板标签的运用以及系统常量和快捷方式的实践。接下来,我们将深入探讨这些关键知识点。 一、ThinkPHP开发方式 ThinkPHP采用MVC(Model-View-Controller...

    thinkphp5 加载静态资源路径与常量的方法

    本文将详细介绍如何在ThinkPHP5中加载静态资源路径以及使用常量的方法。 1. **加载静态资源路径** 在ThinkPHP5中,为了方便开发者管理静态资源如CSS、JavaScript文件,框架提供了一些预定义的常量。这些常量使得...

    TP5.0完全开发手册

    手册的末尾部分还包含了一些附加信息,如配置参考、常量参考、升级指导、更新日志等,为开发者提供最新的开发信息和版本更新内容。尤其是关于ThinkPHP 5.0的更新日志,它为开发者及时了解框架的最新变化提供了重要的...

    tp5.1完全开发手册

    - **取消系统常量**:简化代码结构,提高可维护性。 - **助手函数增强**:增强了一些常用的助手函数,使得开发者能够更方便地使用这些函数。 - **类库别名机制**:引入了类库别名机制,使得代码更加清晰易懂。 ####...

    TP5.0完全开发手册WORD版

    - **模板标签**:使用自定义的模板标签来扩展模板功能。 - **变量输出**:在模板中输出变量的值。 - **系统变量**:访问框架提供的系统变量。 - **请求参数**:在模板中访问 HTTP 请求参数。 - **使用函数**:在模板...

    TP5笔记1

    【标题】"TP5笔记1"涉及的知识点主要围绕PHP框架ThinkPHP5展开,包括常量、后台执行、配置文件、控制器生成、URL路由、模板引擎、验证规则、第三方库集成以及邮件发送等方面。 1. **常量开发**:在ThinkPHP5中,...

    ThinkPHP让../Public在模板不解析(直接输出)的方法 原创

    解决这个问题的方法是在ThinkPHP的配置文件`config.php`中添加一个模板常量设置。这个设置允许我们自定义模板引擎需要自动替换的字符串。具体操作如下: ```php 'TMPL_PARSE_STRING' =&gt; array( '../Public' =&gt; ".....

    TP开发手册实用版

    还提供了常量参考、助手函数和升级指导等信息。 最后,手册强调它不能替代教程,而是作为开发中的参考工具,对于新手建议先阅读官方的《5.0入门系列教程》,并提供了ThinkPHP官方的QQ群信息,以供进一步学习和交流...

    thinkphp5.1框架模板赋值与变量输出示例

    ThinkPHP5.1还提供了丰富的内置变量,比如`$Think`对象,它包含了模板相关的一些常量,`$Request`对象包含了当前请求的相关信息,`$Config`对象包含了系统的配置信息等。开发者可以通过这些内置变量来获取框架相关...

    tp5:小项目5

    HTML文件可能被用作模板,与tp5的视图层进行交互,动态渲染页面内容。 【文件名称列表】"tp5-main" 可能是项目的主目录或者主要入口文件,它可能是整个项目的核心部分。在tp5中,"main"可能包含着项目的主要配置、...

    ACCP6.0 JAVA第一章TP01.ppt

    4. **语法基础**:包括数据类型(如整型、浮点型、字符型、布尔型)、变量、常量的声明与使用;运算符(算术、关系、逻辑、位、赋值等)的掌握;流程控制语句(如if-else、switch、for、while循环)的理解与实践。 ...

    PHP仿tp实现mvc框架基本设计思路与实现方法分析

    2. **常量和函数**:使用`define()`和`const`来定义常量,确保数据在程序运行中不被更改。函数则是程序的基本执行单元,可以使用`global`关键字来使用全局变量。 3. **类的实现**:类是面向对象编程的基础,`class`...

    thinkphp3.2离线文档

    - **Define标签**: 定义常量。 - **标签嵌套**: 标签可以相互嵌套。 - **import标签**: 导入外部文件。 - **使用PHP代码**: 直接使用PHP代码。 - **原样输出**: 输出未经处理的字符串。 - **模板注释**: 添加...

    ThinkPHP5编码参考1

    - 模板变量赋值推荐使用数组参数,如`this-&gt;assign(['userName' =&gt; '手心'])`,这可以使模板渲染更清晰。 - 数据查询推荐使用`find`和`select`方法,而不是`get`或`all`,因为它们提供了更多的控制和更好的性能...

Global site tag (gtag.js) - Google Analytics