最新消息: 新版网站上线了!!!

thinkphp常用变量

模板常量

__ROOT__:      根目录
__SELF__:      当前页面地址
__ACTION__:    2级 控制器地址 /index.php/index/page

__URL__:       1级 控制器地址 /index.php/index

__APP__:     输出app入口地址  /index.php

__PUBLIC__: 跟目录public目录

以上缩写仅适用于模板中使用

 

echo THINK_VERSION; 版本信息

 

C函数

C('DB_NAME','thinkphp'); 设置

C('DB_NAME');  读取

C();   读取全部

 

M函数

$User = M('User'); //实例化User模型 同等于 $User = new Model('User');  

$User->select(); //执行其他的数据操作

 

G函数      // 统计区间内存使用情况
G('begin');
PHPcode 
echo G('begin','end');

 

L函数

L('LANG_VAR','语言定义');//定义

L('LANG_VAR');   //读取

$lang['lang_var1'] = '语言定义1';
$lang['lang_var2'] = '语言定义2';
$lang['lang_var3'] = '语言定义3';
L($lang);  //批量设置

$lang = L(); //读取全部

{$Think.lang.lang_var}   //模板里使用     
{:L('lang_var')}
如果更改语言包 需要删除本地cookie

 

要启用多语言功能,首先要下载多语言行为扩展(http://www.thinkphp.cn/extend/186.html),或者下载官方的完整扩展包(http://www.thinkphp.cn/down/253.html) 里面也已经包含多语言行为扩展了,把下载后解压到的CheckLangBehavior.class.php 文件放入ThinkPHP/Extend/Behavior(如果没有请手动创建)目录下面。然后在项目的行为配置文件(Conf/tags.php)中 启用多语言行为,添加如下配置项:

return array(
      'app_begin' => array('CheckLang')  // 添加下面一行定义即可
 );

    项目config.php文件加入

    'LANG_SWITCH_ON' => true,   // 开启语言包功能
    'LANG_AUTO_DETECT' => true, // 自动侦测语言 开启多语言功能后有效
    'DEFAULT_LANG' => 'zh-cn', // 默认语言
    'LANG_LIST'        => 'zh-cn,en-us', // 允许切换的语言列表 用逗号分隔
    'VAR_LANGUAGE'     => 'l', // 默认语言切换变量

 

 

-----------------------------------------------------------------

$Model = new Model() // 实例化一个model对象 没有对应任何数据表 

$Model->execute("update think_user set name='thinkPHP' where status=1");

 

 

$user = $Data->getBy字段名('值'); //查询字段名为值的所有记录

echo $Data->getFieldBy字段名('值','返回字段'); //查询字段名为值的 返回id值

 

-------------------------------------------------------------------

隐藏index.php

如果是Apache则需要在入口文件的同级添加.htaccess文件,内容如下

  1. <IfModule mod_rewrite.c>

  2. RewriteEngine on

  3. RewriteCond %{REQUEST_FILENAME} !-d

  4. RewriteCond %{REQUEST_FILENAME} !-f

  5. RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

  6. </IfModule>

 

// 添加数据库配置信息 'DB_TYPE'   => 'mysql', // 数据库类型

'DB_HOST'   => 'localhost', // 服务器地址

'DB_NAME'   => 'thinkphp', // 数据库名

'DB_USER'   => 'root', // 用户名

'DB_PWD'    => '', // 密码 

'DB_PORT'   => 3306, // 端口 

'DB_PREFIX' => 'think_', // 数据库表前缀

 

获取变量

$id = $this->_get('id'); // 获取get变量

$this->_get("name","strip_tags"); //获取变量并执行函数

$this->_get("id","strip_tags",0);//不存在的默认是0

3.1.3 以上用

I('get.id');

I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串

I('get.name','','htmlspecialchars'); // 采用htmlspecialchars方法

I('get.'); // 获取整个$_GET 数组

 

I('param.id'); //自动判断类型

echo I('param.1'); // 参数1
echo I('param.2'); // 参数2

I('id'); //等于I('param.id')

 

 

 

模板技术

 

config.php  'TMPL_TEMPLATE_SUFFIX'=>'.tpl' 设置默认模板的扩展名

常量

!-Public-!: 会被替换成当前项目的公共模板目录 通常是 /项目目录/Tpl/当前主题/Public/ 
!-TMPL-!: 会替换成项目的模板目录 通常是 /项目目录/Tpl/当前主题/
(注:为了部署安全考虑,!-Public-!和!-TMPL-!不再建议使用)
!-PUBLIC-!:会被替换成当前网站的公共目录 通常是 /Public/
!-ROOT-!: 会替换成当前网站的地址(不含域名) 
!-APP-!: 会替换成当前项目的URL地址 (不含域名)
!-GROUP-!:会替换成当前分组的URL地址 (不含域名)
!-URL-!: 会替换成当前模块的URL地址(不含域名)
!-ACTION-!:会替换成当前操作的URL地址 (不含域名)
!-SELF-!: 会替换成当前的页面URL

 

新增加自己的常量

'TMPL_PARSE_STRING'  =>array(

    '!-PUBLIC-!' => '/Common', // 更改默认的!-PUBLIC-! 替换规则

     '__JS__' => '/Public/JS/', // 增加新的JS类库路径替换规则

     '__UPLOAD__' => '/Uploads', // 增加新的上传路径替换规则

)

 

<import type='css' file="c" />  导入默认网站Public目录下的c.css

<import type='css' file="c,css.style" />  导入Public/c.sss 和Public/css/style.css

<import type='js' file="js.1" />  导入Public/js/1.js

<include file="comm:head"/>    导入模板comm模块下的head模板

<include file="content"/>      导入同模块下的content模板

 

 

跳转

 $this->assign("waitSecond",5);   时间

 $this->success("提示消息",地址);   

config.php 设置模板

    'TMPL_ACTION_ERROR'     => 'Public:error', // 默认错误跳转对应的模板文件
    'TMPL_ACTION_SUCCESS'   =>  'Public:success', // 默认成功跳转对应的模板文件
    'TMPL_EXCEPTION_FILE'   =>  'Public:exception',// 异常页面的模板文件

在tpl新建Public目录和相关页面

 

$this->redirect(地址,  array('status'=>1,"id"=>200),延时,单位为秒, 提示信息) ;

 

 

自动验证 和自动完成

<?
class NewsModel extends Model{
    protected $_validate = array(  //自定验证
        array('title','require','标题不能为空!'),
        array('content','require','内容不能为空。'),
    
    );
    
     protected $_auto = array (  //自动完成
        array('zz','1'),
        array('date','time',3,"function"),
    );
    

 protected $insertFields = 'account,password,nickname,email';  //插入的时候的字段  其他无效 

 protected $updateFields = 'nickname,email';                   //更新的字段   其他无效

 

    


    public function getinfo(){
        
        return 'asdasd';
        }
    
}

?>

 

 

   array(填充字段,填充内容[,填充条件][,附加规则])

1 必须。需要填充的表单字段,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如验证码等。

2 必须。要对字段自动填充的内容。

3 可选。 1 :新增数据时候填充(默认)2 :更新数据时候填充 3 :全部情况下填充

4 可选。string:字符串,表示填充内容为字符串(默认)function:使用函数,表示填充的内容是一个函数返回值 callback:使用方法,表示填充的内容是一个当前 Model 的方法返回值 field:字段,表示填充的内容是一个其他字段的值

 

 

数据库设置config.php  

// 添加数据库配置信息
'DB_TYPE'   => 'mysql', // 数据库类型
'DB_HOST'   => 'localhost', // 服务器地址
'DB_NAME'   => 'thinkphp', // 数据库名
'DB_USER'   => 'root', // 用户名
'DB_PWD'    => '', // 密码
'DB_PORT'   => 3306, // 端口
'DB_PREFIX' => 'think_', // 数据库表前缀

 

 

开启调试模式

Conf\config.php 

define('APP_DEBUG',TRUE);

新建Conf\debug.php

<?php
return array(
    'SHOW_PAGE_TRACE' =>true,
);
?>

TRACE 只有在display()后 才能显示;

网站内部可以用

 

 

 

 

 

缓存

S(array('type'=>'xcache','expire'=>60));  //cache 

cache('a',$value,300);//设置

$value = cache('a');//读取

    cache('a',null);//删除

 

快速缓存

F("name",值); //设置

$Data=F("name"); //读取   默认目录在 项目\Runtime\Data

F('data',NULL); 删除

F('User/abc',$data);/创建带目录的user是文件名 abc的名字   读取也是需要带上目录 F('User/abc') 

 

sql 缓存  $db-> cache(true) -> order("id desc")->select(); //默认 DATA_CACHE_TIME 设置时间

    $db->cache('cache_name',60)->select();         

 

 

 

控制器 

 

public function _empty($name){     

空方法 

   }

 

空控制器和空方法

class EmptyAction extends Action{
    
     public function index(){
            echo 'no';
     }
    public function _empty(){
            echo 'no__';
     }
}

 

 

前置后置

    class IndexAction extends Action{
        //前置操作方法
        public function _before_index(){
            echo 'before<br/>';
        }
        public function index(){
            echo 'index<br/>';
        }
        //后置操作方法
        public function _after_index(){
            echo 'after<br/>';
        }
    }

 

IS_GET    是否GET请求
IS_POST    是否POST请求
IS_PUT    是否PUT请求
IS_DELETE    是否DELETE请求
IS_AJAX    是否AJAX请求

 

 

 

分页

             $db = D("News");     
             $count      = $db->count(); //统计总数 
             import('ORG.Util.Page');// 导入分页类
             $Page       = new Page($count,5);// 实例化分页类 传入总记录数,和每页的数量
             $show       = $Page->show();// 分页显示输出
             $data = $db->cache(false)->limit($Page->firstRow.','.$Page->listRows) -> order("id desc")->select();

             $this -> assign("show", $show); //列表

上传

public function upload() {
        import('ORG.Net.UploadFile');
          $upload = new UploadFile();// 实例化上传类
          $upload->maxSize  = 3145728 ;// 设置附件上传大小
          $upload->allowExts  = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
          $upload->savePath =  './Public/Uploads/';// 设置附件上传目录      
        $upload->thumb=true;//产生缩略图
        $upload->thumbMaxWidth=100;
        $upload-> thumbMaxHeight=100;
        $upload->thumbPrefix="s_";              
 
        if(!$upload->upload()) {    
            $this->error($upload->getErrorMsg());// 上传错误提示错误信息
        }
        else
        {// 上传成功
              $info = $upload->getUploadFileInfo();
              $db=D('News');
              $_POST['pic']=$info[0]["savepath"].$info[0]["savename"];
    
              if($db->add($_POST)){
                    $this->success('上传成功!');    
              }else{
                    $this->error('上传失败!');                    
               }
       }
}

 

验证码

模板里 <input name="abc" type="text" /><img src="__APP__/index/verify" />

 

程序

  if(session('verify') != md5($_POST['abc'])) {
               $this->error('验证码错误!');
  }

 

获取ip

$ip = get_client_ip();  //127.0.0.1

$ip = get_client_ip(1); //2130706433

 

根据id获取更多信息

 import('ORG.Net.IpLocation');// 导入IpLocation类
 $Ip = new IpLocation(); // 实例化类
 $location = $Ip->getlocation('127.168.49.22'); // 获取某个IP地址所在的位置
 dump($location);

地址库文件UTFWry.dat放入IpLocation扩展类库所在目录下面即可

 

转载请注明:谷谷点程序 » thinkphp常用变量