thinkPHP3.2.3使用过程中遇到的问题收集

thinkPHP3.2.3使用过程中遇到的问题收集


1、switch标签里变量不要带$符号;如:

<switch name="order_details['status']">
       <case value="1">支付确认中</case>
       <case value="2">已成交</case>
       <default />已关闭
</switch>

2、数组在模板中输出乱码:嵌套错了也会乱码;

3、上传多张图片时,下面设置会导致始终只有一张图片上传成功的BUG,原因是图片重名,后面的图片会覆盖前面的图片,造成丢图片的假象。

$upload->saveName  = 'time';

意思是用time()生成一个时间戳重命名所有待上传图片,这里多张图片用了同一个时间戳来命名,所以才出现了上面描述的BUG。

解决办法:

$upload->saveName  = array('uniqid', ''); //系统默认,也可以直接把上面的设置注释掉即可

4、生成唯一字符串

md5(uniqid(rand(), TRUE)); //QQ登录签名用法

5、项目需要多数据库连接时,因为库的表前缀不同,导致框架无法自动切换前缀查询失败,解决办法:

找到:\ThinkPHP\Library\Think\Model.class.php 第90行处,加入条件分支即可。

参考网址:http://www.thinkphp.cn/topic/10370.html

}elseif($this->connection){
            $config = C($this->connection);
            $this->tablePrefix = isset($config['DB_PREFIX'])?$config['DB_PREFIX']:'';
}

6、getField('id,name',  true),取字段如果想取到整列的结果,第一个字段必须是主索引或唯一索引字段才能取到整列。

7、遇到的一个坑:项目是分多模块的,每个模块都有独立的模型层,在做服务层时,涉及到用D函数调用数据模型,而D函数默认是调用当前模块下的模型,服务层又被各模块调用的,如果D函数不指定模型路径很容易造成模型混乱,所以最好带上模型相对路径,如D('Api/User',)

8、模板里没必要写这种形式{:U('/user/realname')} ,直接写/user/realname

9、$this->display('Wechat/welcome');  //display里建议还是把路径加上,解决大小写访问时的出错

10、where的复杂用法:

$where['admin_id|admin_id|admin_id'] = [session('admin.id'), 0, '', '_multi' => true]; //相当于 (admin_id=xxx or admin_id='0' or admin_id='')
$where['is_investor'] = 1;//接下来继续,相当于(admin_id=xxx or admin_id='0' or admin_id='') and (is_investor=1)

11、分页传参问题:当表单中有数组表单提交时,分页链接无法带回数组参数,如按多个标签搜索会员时,分页就出BUG,解决办法是:将数组表单转换成字符串,用分隔符隔开再传参

                       

点击阅读全文

上一篇 2023年 5月 25日 am10:31
下一篇 2023年 5月 25日 am10:33