在ThinkPHP搭建项目的同时,会考虑到后期对静态页面的维护问题, 在项目的不断完善的同时,会有大量图片,css文件,以及js文件等一些容易修改.添加.或者删除的资源 如果在中后期对各个静态页面,js.css文件逐个修改的话.将是一个繁重的任务.更加不容易修改.这就违背了tp框架的初衷 因此,常量的使用极大地改变了这种现状,使得这些操作更加容易执行 简单介绍我在开发过程中使用的常量 (给静态资源文件文件访问目录设置常量,方便后期维护) define('CSS_URL','/xampp/sse/…
除了常规变量的输出外,模板引擎还支持系统变量和系统常量.以及系统特殊变量的输出.它们的输出不需要事先赋值给某个模板变量.系统变量的输出必须以$Think.打头,并且仍然可以支持使用函数.常用的系统变量输出包括下面:用法 含义 例子$Think.server 获取$_SERVER {$Think.server.php_self}$Think.get 获取$_GET {$Think.get.id}$Think.post 获取$_POST {$Think.post.name}$Think.reques…
1.普通形式路由(get形式路由) 路由形式:http://网址/入库文件?m=分组&c=控制器&c=控制器&a=方法名&参数=参数 例子:http://localhost/think/index.php?m=Home&c=User&a=test&id=1 2.pathinfo路由形式(默认) 路由形式:http://网址//入口文件/分组名/控制器名/方法/参数名1/参数值1/参数名2/参数值2 例子:http://localhost/think/…
不但要记住核心的东西, 还要记住 相关的 东西: 如php cli的版本是 5.6.14 bulit: sep 30, 2015 tp中, 通常说的系统就是框架; 项目就是 "应用程序",就是"网站" 模板, 用Tpl表示, 为什么不用Tmp, 因为temp常常简写为tmp, 可能被误解为 "临时目录", 而tmpl则不会产生误解?? 控制器为什么用m表示, 而不用c: controller表示? 第一, 好像c表示的是conifg, 配置, 而…
Thinkphp是一个体系较为完整的框架,很多地方比国外的框架功能都全,唯一不喜之处是性能,和传说中的.NET有点像. Thinkphp提供较全url处理体系,通过同一规则实现Url的路由和Url生成,Url的生成是通过U('',[])函数获取的.当我在一个Thinkphp中建立两个Application时,其中一个是子目录,发现U()函数获取的Url只能指向的根目录,这使我很恼火,网上找不到合适的方法,经查看U函数源码得到了一个答案! Thinkphp的App目录是通过使用__APP__预编译…
thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes如何解决 一.总结 一句话总结:清缓存就好了,所以框架有问题可以考虑清缓存 清缓存 1.thinkphp中出现unserialize(): Error at offset 533 of 1857 bytes的原因是什么? phpStorm改文件名自动更新了缓存 并且自动更新的缓存内容不对 出错原因:移过来改名字的时候phpStorm的自动更新引用更新了缓存(我看的清清楚楚,没截到…
这一切的一切都得从“Hello world”说起!!! 有很多东西在thinkPHP的官方开发文档上其实都有讲到,我在这里只是想记录自己每天坚持学习PHP的情况,今天接触ThinkPHP的路由,路由这一块可以更好的隐藏我们网站的结构,让我们的网站更安全,这是路由带给我们的一些好处.下面来记录ThinkPHP中的路由这一块主要内容. 一.配置路由 在ThinkPHP框架中找到路由目录下的php文件,系统默认会给我们一个route.php的这个文件,当然我们也能在这个目录下创建自己的一个路由文件,系…
问题: 在 ThinkPHP 中使用原生 js 发起 Ajax 请求的时候.在控制器无法使用 IS_AJAX 进行判断.而使用 jQuery 中的 ajax 是没有问题的. 在ThinkPHP中.有一个判断是 ajax 请求的常量 IS_AJAX: Ajax 请求常用的有两种情况:一种是原生 js 的 ajax 请求.一种是 jQuery 的 ajax 请求. 分析: 先看看使用 jQuery 中使用 ajax 发送请求的时候的头信息: Accept: application/json, tex…
在线编辑器有很多很多, 而且大多是开源的. uediotr基于mit协议, 开源, 可以用于商业和非商业的 任意使用和修改都可以 如果两个相连接的 相邻的 元素之间 因为边框重叠 而显得中间的边框线很粗了, 那么可以设置 其中的一个元素的 某一边的 边框线为none. 其他的地方可以使用 类似 的操作 思想; line-heigh的作用? 对于 一个 行级 元素 中的文本的排版布局, 默认的排版方式是: 从左到右, 从上到下,所以 当 行级元素所在的块 height 较大时, 文本就会位于块的…
thinkphp中cookie和session中操作数组的方法 一.ThinkPHP模板中如何操作session,以及如果session中保存的是数组的情况 在ThinkPHP的模板中操作session时,可以参考ThinkPHP参考文档中的“模板—>系统变量”部分,在默认模板引擎中,语法如下: {$Think.session.user} //输出session中保存的user信息 但是,如果user是一个数组的话,该怎么输出数组中指定的单元(如'user_id')呢?用{$Think.sess…
ThinkPHP3.2.3 手册中路由的地址是: http://www.kancloud.cn/manual/thinkphp/1706 简单配置实例:在配置文件 config.php 中添加 //路由 'URL_ROUTER_ON' => true, 'URL_ROUTE_RULES' => array( 'c/:id' => 'Home/List/index',//id是参数的名称,使用get获取. //例如访问 http://servername/c/9 //实际访问的url是ht…
在对html样式进行优化的时候,经常会用到Js/jquery进行一些跳转切换的样式,而我们常做的就是在Js/jquery代码中嵌url图片链接代码,以实现动态交互的页面效果. 如下图所示:…
我们已经了解了ThinkPHP中的S方法的用法,F方法其实是S方法的一个子集功能,仅用于简单数据缓存,并且只能支持文件形式,不支持缓存有效期,因为采用的是PHP返回方式,所以其效率较S方法较高,因此我们也称之为快速缓存方法.F方法的特点是:简单数据缓存:文件形式保存:采用PHP返回数据方式加载缓存:支持子目录缓存以及自动创建:支持删除缓存和批量删除: 写入和读取缓存 F('data','test data'); 默认的保存起始路径是DATA_PATH(该常量在默认配置位于RUNTIME_PATH…
Thinkphp中的pathinfo模式 http://serverName/appName/module/action/id/1/ pathinfo模式 在不考虑路由的情况下,第一个参数会被解析成模块名称(如果启用了分组的话,则依次往后递推),第二个参数会被解析成操作,后面的参数是显式传递的,而且必须成对出现,例如: http://serverName/appName/module/action/year/2008/month/09/day/21/ 通常的URL里面含有index.php,为了…
ThinkPHP中的视图 1.模板注释 在实际项目开发中,经常要使用注释功能,如果是ThinkPHP框架,则可以在模板文件中使用如下方式进行注释: {// 注释内容 } :单行注释 {/* 注释内容 */ } :多行注释   示例代码: 运行以上代码可知:ThinkPHP框架中的模板注释属于服务端注释,并不会显示输出在客户端浏览器. 2.fetch获取模板内容 在实际项目开发中,如果我们只想获取模板内容但又不输出,那这个时候可以考虑使用fetch方法进行实现. $this->fetch() :①…
thinkphp中导出二维数组到Excel 1.解决时间长度导致EXCEL出现###问题 2.解决长数值型 带来的科学记数法导出问题 订单号不再变为科学记数法 而是直接字符串类型 代码如下: <?php /** * Author lizhaoyao * Add_Time:2015-08-26 * [php_excel_export 用户导出Excel] * @param array $data [含有表头的数组] * @param string $file_name [要保存的文件名] * @p…
本文实例讲述了ThinkPHP中使用ajax接收json数据的方法.分享给大家供大家参考.具体分析如下: 这里通过ThinkPHP+jquery实现ajax,扩展了下,写了个查询,前台代码如下: 首先需要引入jquery.js,主要代码如下: function ajax(id,pic){ //由于ThinkPHP不解析JavaScript里的ThinkPHP常量,所以需要先在这里定义. var URL='__URL__'; $.ajax({ url: URL+'/returnAjax/id/'+…
最近在项目中遇到了需要根据下拉框的条件筛选出符合条件的数据,然后进行列表显示的问题. 在ThinkPHP中进行列表显示的传统过程:通过在后台控制器中查询出数据,然后通过$this->assign()来实现控制器数据向页面的传递,在页面中通过<foreach>或<volist>标签来进行数据的解析,(注:在通过标签进行数据的解析时需要以“$”符号的形式). 在进行条件查询时,需要通过jquery中ajax的方式将条件GET到后台控制器,后台控制器中接收数据,然后根据条件进行查询…
在thinkphp中,url传参合asp.net中原理类似,下面就单个参数和多个参数传递方式进行一个简单讲解 1.传单个参数 单个参数这种比较简单,例如 想像edit操作里面传递一个id值,如下写法__URL__/edit/id/1 http://localhost/index.php/user/edit/id/1 id和其值1要分别位于/后面 后台获取id通过    $id=$_GET['id']   即可获取其具体值. 2.传多个参数 传多个参数相对比较麻烦一点,可以通过两种方式 第一种:传…
版权声明:本文为博主原创文章,转载请注明出处,欢迎使劲喷 虽然推崇在java中使用枚举(可查看<Java中的枚举的治理>)来对数据字典及常量进行控制,但是有些时候,我们还是会觉得常量控制更为便捷. 比如,对于数据字典,我们可以使用枚举值来处理:对于一些其他的信息,我们会使用常量保存和使用. 一.常量遇到的问题 1.苗条的常量类 这里使用苗条形容下我们程序中的常量类,别看它宽度,就只看她长度,滚起屏来,那叫一个长啊,修长的身材,令你如痴如醉.(省略号里的东西,我就不贴了!!!) 例如: publ…
在使用由Angular,React,Vue等应用程序框架构建的客户端应用程序时,您总是会处理HTML5客户端路由,它将完全在浏览器中处理到页面和组件的客户端路由.几乎完全在浏览器中... HTML5客户端路由在客户端上工作的很好,但是当深入链接到一个站点或在浏览器中按刷新时,客户端路由有一个恶习,变成服务器HTTP请求.请求可能未配置服务器的路由. 在这篇文章中,我将讨论如何使ASP.NET Core(或间接ASP.NET应用程序)通过有效地将客户端应用程序重新连接到其路由来处理这些"假&quo…
thinkPHP中M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法.通俗一点说:M实例化参数是数据库的表名.D实例化的是你自己在Model文件夹下面建立的模型文件例如:$user = new UserModel();等价于$user = D('user');如果实例化的是一个空模型例如 $Demo = new Model();那么它等价于 $Demo = M();…
RBAC是什么,能解决什么难题? RBAC是Role-Based Access Control的首字母,译成中文即基于角色的权限访问控制,说白了也就是用户通过角色与权限进行关联[其架构灵感来源于操作系统的GBAC(GROUP-Based Access Control)的权限管理控制].简单的来说,一个用户可以拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色-权限”的授权模型.在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系.其对应关系如下: 在许多的实际应用中,…
在thinkphp中的模板要加载静态文件如css,js等文件时要经常用到模板常量. 假如项目放在/web/shop中,则如下所示对应常量的输出值: 1 2 3 4 5 6 7 8 9 // 不含域名 __ROOT__    指定到站点      /web/shop  __APP__     指定到应用      /web/shop/index.php  __MODULE__  指定到模型      /web/shop/index.php/home  __CONTROLLER__  (__或者__…
引言 在使用mybatis的时候,查询一个集合返回给前台页面,在有的时候,我们会添加一个常量字段到对象或者集合中,来标识这个对象属于的类型等等情况,当前台进行再次请求的时候携带此变量进行请求. 但是:如果在数据库中并没有这个字段的时候,查询集合我们就需要前台进行这个字段的编写,写死!我们可否直接将其对应的字段返回呢?然后前台直接拿到这个字段进行请求即可? 正文 在进行mybatis查询的时候,我们都知道有ResultMap的结果集,所以我们可以在ResultMap中进行常量列的添加 <resul…
thinkphp中composer方式安装的插件如何使用 一.总结 一句话总结:任何东西都是可以百度或者google搜到的,要自己先想怎么解决,解决不出来迅速百度,不要自己臆断 1.在tp5框架的什么位置用composer安装插件? tp5的根目录下(wendor目录的上一级) 2.安装好的插件在哪里引用? 打开项目的入口文件index.php文件,使用require __DIR__ . '/../vendor/autoload.php';完成插件引用 二.内容在总结中 composer在thi…
thinkphp中 Illegal offset type异常 一.错误提示 二.解决思路 1.看出错提示中的函数为assign函数,那说明是我们在从控制器assign数据到页面的部分出现了错误 2.看if选择结构的判断语句,表达的意思如下 因为第二个参数($value值)一定要是数组,所以看传递过来的第一个参数($name键)是否是数组, 如果是数组,那就合并键和值的两个数组的值, 否则就将($value值)做为值,($name键)作为键组成数据 3.array_merge() 将一个或多个数…
原文:Dynamic controller routing in ASP.NET Core 3.0 作者:Filip W 译文:https://www.cnblogs.com/lwqlun/p/11461657.html 译者:Lamond Lu 译者注 今天在网上看到了这篇关于ASP.NET Core动态路由的文章,感觉蛮有意思的,给大家翻译一下,虽然文中的例子不一定会在日常编码中出现,但是也给我们提供了一定的思路. 前言 相对于ASP.NET MVC以及ASP.NET Core MVC中的旧…
Action中使用的系统常量 THINK_PATH // ThinkPHP 系统目录 APP_PATH // 当前项目目录 APP_NAME // 当前项目名称 MODULE_NAME //当前模块名称 ACTION_NAME // 当前操作名称 TMPL_PATH // 项目模版目录 LIB_PATH // 项目类库目录 CACHE_PATH // 项目模版缓存目录 CONFIG_PATH //项目配置文件目录 LOG_PATH // 项目日志文件目录 LANG_PATH // 项目语言文件目…
今天遇到一个问题,就是在vendor表中查询出vendor_id = vendor_f_id的数据,其实使用原生的sql语句是非常简单的: select * from vendor where vendor_id = vendor_f_id 但是,在thinkphp中为了代码的简洁以及通用性,不考虑使用原生的方式进行sql的查询,而是采用查询map的方式进行查询 $condition[ 'vendor_f_id' ] = 'vendor_id'; 但是,thinkphp在处理上述条件的时候,将其…