私人领地

Thinkphp 3.2笔记

重点笔记:

1.再写模板的时候一定要注意大小写 Goods_index.html 正确;goods_index.html 错误 养成程序猿好习惯。linux系统对大小写敏感。

2.基础配置

建立模块(默认访问模块)

define('BIND_MODULE','Login');

define('BIND_MODULE','Admin');

define('BIND_MODULE','User');

 

 

1.环境配置

php版本>5.3.0,用wampserver所有条件满足

2.变量

$this->show('111') 同等与echo '1';

$this->display('dd.html')  输出模板,模板位置view/index/dd.html

$this->display()  是输出默认的模板 view/index/index.html

$this->assign($arr)  

截取字符串:{$data.name|substr=0,3}和<?php echo (substr($data['name'],0,3)); ?>

默认值输出:{$user.nickname|default="这家伙很懒,什么也没留下"}

I('post.id',0,'intval')

 

要尽量避免直接使用$_GET $_POST $_REQUEST 等数据,这些可能会导致安全的隐患。 就算你要获取整个$_GET数据,我们也建议你使用 I('get.') 的方式

 

3.where方法使用字符串条件的时候,支持预处理(安全过滤),并支持两种方式传入预处理参数,例如:

$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select();

$Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();

 

4.连接数据库www\erp\App\Common\Conf,不需要单独去mysql_connect

<?php
return array(
    //'配置项'=>'配置值'
    
    'DB_HOST'   => 'localhost', // 服务器地址
    'DB_NAME'   => 'erp', // 数据库名
    'DB_USER'   => 'root', // 用户名
    'DB_PWD'    => 'root', // 密码
    'DB_PORT'   => 3306, // 端口
    'DB_PREFIX' => 'tp_', // 数据库表前缀 
    'DB_CHARSET'=> 'utf8', // 字符集
    'DB_DEBUG'  =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志 3.2.3新增*
    'DB_TYPE' => 'mysql'    
);

 5.设置__ROOT__过滤

第一个位置(默认位置):

 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);
        return $content;
    }

第二个位置www\erp\App\Common\Conf

第三个位置www\erp\App\Home\Conf

<?php
return array(
    //'配置项'=>'配置值'
    'TMPL_PARSE_STRING' => array(
        '__Template__' => '1',
    ),
);

 6.模板连接

模板不存在:./App/Home/Template/default/Index/index.html

控制Temloate的属性是:DEFAULT_V_LAYER默认是(View)  默认的视图层名称

控制default的属性是:DEFAULT_THEME 默认为空     默认模板主题名称

控制/index/index.html属性是TMPL_FILE_DEPR默认是'/'     //模板文件CONTROLLER_NAME与ACTION_NAME之间的分割符

如'TMPL_FILE_DEPR'        =>  '/'  显示/index/index.html,  'TMPL_FILE_DEPR'        =>  '_' 显示是default/index_index.html 或者是user_index.html,user_add.html 

7.Model模块www\erp\App\Home\Model

Model文件写法

<?php
namespace Home\Model;
use Think\Model;
class GoodsModel extends Model {
    
    // 商品列表
    public function goods_list(){
        $m = M('goods');
        $goods_list = $m->select();
        return $goods_list;
    }
}
?>

在控制器页面调用

<?php
namespace Home\Controller;
use Think\Controller;
class GoodsController extends Controller {
    public function index(){
        $m = D('Goods');
        $goods_list = $m->goods_list();
        $this->assign('goods_list',$goods_list);
        
        
        
         echo $this->display();
    }
}

其他用法

<?php
namespace Home\Model;
use Think\Model;
class GoodsModel extends Model {
    public $test        =   '2';             // 公共属性
    private $f = '2';                          // 私有属性
    public function __construct(){
        $this->m = M('goods');                // 初始化变量
    }
    public function goods_info(){
        print_r($this->m->select());

    }    
}
?>

 

 

8.把tp标签传入到js变量里面

<script type="text/javascript">
// 调用模板下的变量
var TEMPLATE ="__Template__";
var PUBLIC = '__PUBLIC__';
var url = "{:U('goods/index')}";
alert(url);
</script>

9.把tp标签传入到js的function Ajax里面

<script type="text/javascript">
// 调用模板下的变量
var TEMPLATE ="__Template__";
var PUBLIC = '__PUBLIC__';
var url = "{:U('goods/index')}";
//alert(url);

$(document).ready(function(){
    Ajax();    
});
</script>
function Ajax(){
    alert(url);
}

 10,if语句

<if condition= "$goods_list ">记录列表<else />暂无记录</if>

11.传递参数

html页面

<a href="{:U('goods/info',array('goods_id'=>$vo['goods_id']))}">

php

$url = U('Goods/index');

 12.定义define在php文件引用

index.php:define('__UPLOAD__','./Upload/');

php输出:echo  __UPLOAD__;

13 多条件查询

$where['_string'] = ' (goods_name like "%'.$files['keywords'].'%")  OR ( goods_barcode like "%'.$files['keywords'].'") ';

另一种

$where['add_time'] = array(array('lt',$endtime),array('egt',$starttime));

打印出结果

SELECT * FROM `tp_stock_note` WHERE `depot_id` = 1 AND ( `add_time` < 1466410170 AND `add_time` >= 1466352000 ) ORDER BY id desc LIMIT 0,15

 不同字段相同查询

$where['goods_name|barcode|goods_sn'] = array('like','%'.$keywords.'%');

不同字段不同查询

$map['status&title'] =array('1','thinkphp','_multi'=>true); //'_multi'=>true必须加在数组的最后,表示当前是多条件匹配

等同于

$map['status'] = 1;
$map['title']  = 'thinkphp';

查询字段支持更多的,例如:

$map['status&score&title'] =array('1',array('gt','0'),'thinkphp','_multi'=>true);

 

 

 

14,thinkphp3.2 分页的LIST_ROW 不显示问题(增加红色代码),Page.class.php第139行

array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%'),
            array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages),

改为

array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%','%LIST_ROW%'),
            array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages,$this->listRows),

 15,

$g = A('goods') 与$g= new GoodsController(); 效果同等

$goods_list = $g->goods_list();

16.语言包

html页面输出:{:L('serKeywords')}

php:$val = L('serKeywords')

16.输出sql语句

$where['offer_id'] = $id;
           $arr = $m->field('goods_name,goods_sn,barcode,goods_type,price')->select();
        $f = $m->getlastsql();
        print_r($f)

17.加载类方式

手动加载:

// 导入Org类库包 Library/Org/Util/Date.class.php类库
import("Org.Util.Date");
// 导入Home模块下面的 Application/Home/Util/UserUtil.class.php类库
import("Home.Util.UserUtil");
// 导入当前模块下面的类库 
import("@.Util.Array");
// 导入Vendor类库包 Library/Vendor/Zend/Server.class.php
import('Vendor.Zend.Server');

如:

Auth.class.php

namespace Org\Util    //注意上面不需要这个
class
Auth { public function ss(){ echo '22'; } }
import("Org.Util.Auth");
$tt = new \Auth();                    //创建PHPExcel对象,注意,不能少了\
 echo $tt->ss();

 

自动加载:

new \Org\Util\Auth();

 

 

17.ThinkPHP\Library\Org\Util 命名

在util新建Auth.class.php文件

class Auth {
    public function ss(){
        echo '22';    
    }
}

在控制器页面引用

import("Org.Util.Auth");
$tt = new \Auth();                    //创建PHPExcel对象,注意,不能少了\
echo $tt->ss();

 18输出模板路径

echo T('Index/index');

19直接输出T模板

$this->display(T('Index/index')

$this->display(T('Admin@Public/menu'));

T('Admin@Public/menu');// 返回 Admin/View/Public/menu.html

posted @ 2016-04-08 17:20  狂奔的蜗牛Snails  阅读(453)  评论(0编辑  收藏  举报