ThinkPHP使用技巧经验总结
add方法返回主键(id)的值 
  在往数据表中添加数据时调用add方法,默认返回值就是刚添加的id值,就不用再去查询了.
  
  
  save方法返回值的判断
  
  在修改数据时,如果修改成功返回的是1,不成功则是0,如果没用做任何的修改就保存了,那么返回值还是0.
打印sql语句 
  $User = D('User');
  
  $User->select();
  
  echo $User->getLastSql();或者echo $User->_sql();
  
  获取最后执行的sql语句,方便查看调试
  
  
  跨模板主题调用模板
  
  假如Tpl下有new主题,该主题下有User文件夹,文件夹下有index.html
  
  你当前的模板主题是Tpl下的default,那么可以用$this->display('new:User:index');
  
  或者用全路径输出$this->display('./Tpl/new/User/index.html');
  
  
  路由规则^符号的使用
  
  这个符号在手册中没有提及,但是作用却不可忽视。
  
  用法:'user/^getlist|tag' => 'user/index'
  
  作用:在user模块中,除了getlist和tag方法,其他存在的方法全部指向index方法。参数之间用|间隔
  
  这样可以屏蔽一些不想让用户访问到但是又必须定义成public的方法
model中的前置和后置操作
发现ThinkPHP里面隐藏了几个有用的方法, model层里面有几个很有用的方法并没有出现在手册里, 下面我列举一些.
1.  _after_find  和  _after_select:查询成功的回调方法
    用法: 
    在自定义的model中重写
class ArticleModel extends Model { protected function _after_find(&$data, $option) { switch ($data['status']) { case -2: $data['status_text'] = '待审核'; break; case -1: $data['status_text'] = '已删除'; break; case 0: $data['status_text'] = '禁用'; break; case 1: $data['status_text'] = '正常'; break; } } protected function _after_select(&$resultSet,$options) { foreach ($resultSet as &$data) { $this->_after_find($data, $options); } } }
这样在使用的时候, 你用
$list = D('Article')->select(); 
或
$info = D('Article')->find($id);
就会自动根据status字段添加status_text字段
还有一下方法, 大家可以自己测试
2. _after_delete , _before_delete
        : 在删除操作之后 或 之前, 根据数据做一些操作 (如: 删除分类的时候 同时删除分类下的文章)
3. _after_insert , _before_insert
        : 在插入之后 或 之前, 根据数据做一些操作 (如: 插入文章成功 自动让分类统计+1)
4. _after_update , _before_update
    : 在更新之后 或 之前, 根据数据做一些操作 (如: 重新计算分类文章总数)
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号