[thinkphp]自定义一个信息对话框(lightbox_me)

在使用discuzx中有一个Message以及Dialog方法来显示信息对话框。今天写项目的时候,需要一个信息对话框,所以就着手利用lightbox_me插件来写一个做备用。 注:lightbox_me插件官网 http://buckwilson.me/lightboxme/ 第一步: 下载lightbox_me插件   第二步:实现对话框弹出功能,并异步获得信息对话框数据 1.  在尾部文件中添加对话框代码 <div id=”Message” style=”display: none;”></div> 2. 在头部文件中导入js文件 <script type=”text/javascript” src=”__PUBLIC__/Js/jquery-2.0.3.min.js”></script> <script type=”text/javascript” src=”__PUBLIC__/Js/jquery.json-2.4.min.js”></script> <script type=”text/javascript” src=”__PUBLIC__/Js/jquery.lightbox.js”></script> 3.  添加链接标签 <a class=”btn” href=”{:U(“Message”,array(‘id’=>1))}” id=”Dialog”>在线调查</a> 4. 自定义弹出窗口方法(main.js文件) $(“#Dialog”).click(function() { var href = $(this).attr(“href”); $.get(href).success(function(data) { if (typeof (data) != “object”) { data = $.parseJSON(data); } $(“#Message”).html(data.info); }); $(“#Message”).lightbox_me({ centered: true, onLoad: … Continue reading “[thinkphp]自定义一个信息对话框(lightbox_me)”

【Thinkphp】字符串截取函数msubstr

使用Thinkphp开发项目,需要对列表文字进行截取,而不至于文字溢出。一开始使用的是PHP再带的截取函数substr,发现此函数只对英文或者数字截取,然后再使用mb_substr,还是出现问题:会出现乱码。查看thinkphp文档发现有对应的函数(msubstr),可以来实现以上截取中英文功能。请看如下代码: <span>{$zhzj.desc|msubstr=0,156}<a href=”{:U(‘page’,array(“nav”=>$zhzj[‘name’]))}”>[查看详情]</a> 如果直接在模板中使用该函数的话,可能会提示此函数找不到,解决方法:导入thinkphp函数库即可。代码如下: Load(‘extend’); msubstr函数使用方法: msubstr($str, $start=0, $length, $charset=”utf-8″, $suffix=true) $str:要截取的字符串 $start=0:开始位置,默认从0开始 $length:截取长度 $charset=”utf-8″:字符编码,默认UTF-8 $suffix=true:是否在截取后的字符后面显示省略号,默认true显示,false为不显示  

【Thinkphp】解决Function get_magic_quotes_gpc() is deprecated问题

在最新版的Wamp搭建web环境的时候,用thinkphp开发项目就会出现一个“Deprecated: Function get_magic_quotes_gpc() is deprecated”的提示警告,请看如下截图:   经“度娘”一查,发现php版本高了,而get_magic_quotes_gpc() 这个函数在所使用的php版本中弃用了。   解决方法: 找到使用该函数的文件: ThinkPHP\Common\runtime.php // 系统信息 if(version_compare(PHP_VERSION,’5.4.0′,'<‘)) { ini_set(‘magic_quotes_runtime’,0); define(‘MAGIC_QUOTES_GPC’,get_magic_quotes_gpc()?True:False); }else{ define(‘MAGIC_QUOTES_GPC’,false); } 修改为如下: // 系统信息 if(version_compare(PHP_VERSION,’5.4.0′,'<‘)) { //ini_set(‘magic_quotes_runtime’,0); //define(‘MAGIC_QUOTES_GPC’,get_magic_quotes_gpc()?True:False); define(‘MAGIC_QUOTES_GPC’,ini_set(“magic_quotes_runtime”,0)?True:False); }else{ define(‘MAGIC_QUOTES_GPC’,false); } 效果:  

【thinkphp】解决IF标签变量与变量比较出现的问题

在用thinkphp写项目的时候,发现一个问题:foreach标签循环显示数据时,如果在该标签中需要用到IF标签来判断就会出现问题,请看如下代码: <if condition=”$id < 5 “> value1 <else /> value2 </if> 这种方式是不会出问题,但是遇到二位数组变量或者三维数组变量比较的时候,就会对比不出来,请看代码: <foreach name=”datas.cats_datas” item=”cats”> <option value=”{$cats.cat_id}” <if condition=”$datas.datas.cat_id eq $cats.cat_id “>selected=”selected”</if> >{$cats.cat_name}</option> </foreach>  解决方法: <foreach name=”datas.cats_datas” item=”cats”> <option value=”{$cats.cat_id}” <if condition=”$datas[‘datas’][‘cat_id’] eq $cats[‘cat_id’] “>selected=”selected”</if> >{$cats.cat_name}</option> </foreach>  原因: 第一层标签以下不支持$a.name这种点的写法,所以大家尽量使用$a[‘name’]这种。

【thinkphp】模板的使用技巧

一、模板包含 <include file="完整模板文件名" /> <include file="./Tpl/default/Public/header.html" /> <include file="read" /> <include file="Public:header" /> <include file="blue:User:read" /> <include file="$tplName" /> <include file="header" title="ThinkPHP框架"keywords="开源WEB开发框架"/> 在模板中变量用[变量]接受 <include file='file1,file2' />   二、模板渲染 1、自动开启模板渲染 设置配置文件 'LAYOUT_ON'=>true,//开启模板渲染 准备一个模板渲染页面,在页面中使用{__CONTENT__}接受具体模板页面的内容 如果在摸一个具体模板中不希望使用渲染模板,可以在页首添加{__NOCONTENT__} 2、不开启自动模板渲染可以在每一个具体页面的页首添加 <layout name='layout'/> 3.使用技巧 在渲染模板文件中也可以使用其他模板文件的内容 <include file='Public:header'/> <body> <p>这里是渲染页面!!!</p> {__CONTENT__} </body> </html>   三、模板的继承

【thinkphp】模板中的基本语法

一、导入CSS和JS文件 1、css link js scr <link rel='stylesheet' type='text/css' href='__PUBLIC__/Css/test.css'/> <script src='__PUBLIC__/Js/test.js'></script> 2.import <import type='js' file='Js.test' /> //导入Public文件夹下面的Js目录中的test.js文件,import标签可以省略type属性,默认就是js的 <import type='css' file='Css.test' /> //可以更改默认文件夹 设置basepath属性 <import type='js' file='Js.my' basepath='./Other'/> 3.load //方法可以自动检测导入的文件类型 <load href='__PUBLIC__/Js/test.js' />   二、分支结构 1、if <if condition='$sex eq "男"'> 男人是泥巴做的 <else /> 女人是水做的 </if> <if condition='$age lt 18'> 未成年 <elseif condition='$age eq 18'/> 青春年少 <else … Continue reading “【thinkphp】模板中的基本语法”

【thinkphp】模板中的变量

一、变量输出 1.标量输出 2.数组输出 {$name[1]} {$name[‘k2’]} {$name.k1} 3.对象输出 {$name:k} {$name->k} 二、系统变量 {$Think.get.id} 三、使用函数 {$name|strtoupper} 生成的编译后文件是 <?php echo (strtoupper($name)); ?> {$name|date='Y m d H:i:s',###} 四、默认值 {$name|default='这里是默认值'} 五、运算符 + – * / % ++ — {$name++}

【thinkphp】视图介绍

一、模板的使用   a、规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].html(.tpl) 更换模板文件的后缀名(修改配置文件) 'TMPL_TEMPLATE_SUFFIX'=>'.html',//更改模板文件后缀名 b、修改模板文件目录层次 'TMPL_FILE_DEPR'=>'_',//修改模板文件目录层次 c、模板主题 'DEFAULT_THEME'=>'your',//设置默认模板主题 需要在TPL下面新建一个your文件夹作为模板主题文件夹 如何动态修改模板主题? 1、在后台准备一个功能,修改config.php文件中的默认模板项 2、通过url传递 t=主题 参数可以修改不同的模板 'DEFAULT_THEME'=>'your',//设置默认模板主题 'TMPL_DETECT_THEME'=>true,//自动侦测模板主题 'THEME_LIST'=>'your,my',//支持的模板主题列表 二、输出模板内容  a、display 1.display中没有参数 $this->display(); 2.可以带参数 $this->display(本模块文件夹下的其他模板文件); $this->display('index2'); $this->display(其他文件夹下的模板文件); $this->display('Public:error');//注意,仅仅需要在Tpl下有Public文件夹以及其中的error.html即可,不需要一定有Public模块 $this->display(其他主题下的 文件夹下的 模板文件);//需要开启主题支持 $this->display('my:Index:index'); $this->display(一个url路径); $this->display('./Public/error.html'); $this->display('./Public/error.html','utf-8','text/xml'); $this->show($content); 3.fetch方法 获得模板文件中的内容,以字符串形式返回 $content=$this->fetch('Public:error'); 4.show方法 不需要模板文件,可以直接输出模板内容 $content=$this->fetch('Public:error'); dump($content); $content=str_replace('h1','i',$content); $this->show($content); 三、模板中的赋值   //$this->assign('name','赵桐正'); $this->name='赵桐正2'; $this->display(); 四、模板替换  __PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/ __ROOT__: … Continue reading “【thinkphp】视图介绍”

【thinkphp】查询方式

普通查询方式 a、字符串 $arr=$m->where("sex=0 and username='gege'")->find(); b、数组 $data['sex']=0; $data['username']='gege'; $arr=$m->where($data)->find(); 注意:这种方式默认是and的关系,如果使用or关系,需要添加数组值 $data['sex']=0; $data['username']='gege'; $data['_logic']='or';   表达式查询方式 $data['id']=array('lt',6); $arr=$m->where($data)->select(); EQ 等于 NEQ不等于 GT 大于 EGT大于等于 LT 小于 ELT小于等于 LIKE 模糊查询 $data['username']=array('like','%ge'); $arr=$m->where($data)->select(); NOTLIKE $data['username']=array('notlike','%ge%'); //notlike中间没有空格 $arr=$m->where($data)->select(); 注意:如果一个字段要匹配多个通配符 $data['username']=array('like',array('%ge%','%2%','%五%'),'and');//如果没有第三个值,默认关系是or关系 $arr=$m->where($data)->select(); BETWEEN $data['id']=array('between',array(5,7)); $arr=$m->where($data)->select(); //SELECT * FROM `tp_user` WHERE ( (`id` BETWEEN 5 AND 7 ) ) $data['id']=array('not between',array(5,7));//注意,not … Continue reading “【thinkphp】查询方式”

【thinkphp】CURD介绍

读取数据 对数据的读取 Read $m=new Model('User'); $m=M('User'); select $m->select();//获取所有数据,以数组形式返回 find $m->find($id);//获取单条数据 getField(字段名)//获取一个具体的字段值 $arr=$m->where('id=2')->getField('username');   创建数据 对数据的添加 Create $m=new Model('User'); $m=M('User'); $m->字段名=值 $m->add(); 返回值是新增的id号   删除数据 $m=M('User'); $m->delete(2); //删除id为2的数据 $m->where('id=2')->delete(); //与上面效果相同,也是删除id为2的数据 返回值是受影响行数   更新数据 $m=M('User'); $data['id']=1; $data['username']='ztz2'; $m->save($data); 返回值是受影响行数