Thinkphp增加操作(Controller到模型Model的逻辑)

一、控制器逻辑处理
 public function add(){
      if(IS_POST){
          $model=D('Goods');
          if($model->create(I('post.'),1)){
              if($model->add()){
                  $this->success('添加成功',U('add'));
                  exit;
              }
          }
          $error=$model->getError();
          $this->error($error);
      }
$this->show();
  }


二模型负责数据部分

知识一:数据的验证查考手册:http://document.thinkphp.cn/manual_3_2.html#auto_validate

知识二生产缩略图:http://document.thinkphp.cn/manual_3_2.html#image
// 在添加时调用create方法时允许接收的字段
protected $insertFields=array('goods_name','price','goods_desc','is_on_sale');
// 定义表单验证的规则,控制器中的create方法时用
protected $_validate=array(
   array('goods_name','require','商品名不能为空',1),
   array('goods_name','1,45','商品名为1到45个字符',1,'length'),
   array('price','currency','价格必须是货币格式', 1),
   array('is_on_sale', '0,1', '是否上架只能是0,1两个值', 1, 'in'),
);
protected function _before_insert(&$data,$option){
     $data['addtime']=time();
   if( isset($_FILES['logo']) && $_FILES['logo']['error'] == 0){
      $rootPath = C('IMG_rootPath');
      $upload = new ThinkUpload(array(
         'rootPath' => $rootPath,
      ));// 实例化上传类
      $upload->maxSize = (int)C('IMG_maxSize') * 1024 * 1024;// 设置附件上传大小
      $upload->exts = C('IMG_exts');// 设置附件上传类型
      /// $upload->rootPath = $rootPath; // 设置附件上传根目录
      $upload->savePath = 'Goods/'; // 图片二级目录的名称
      // 上传文件
      $info   =   $upload->upload();
      if(!$info)
      {
         // 先把上传失败的错误信息存到模型中,由控制器最终再获取这个错误信息并显示
         $this->error = $upload->getError();
         return FALSE; // 返回控制器
      }
      else
      {
         $logoName = $info['logo']['savepath'] . $info['logo']['savename'];
         // 拼出缩略图的文件名
         $smLogoName = $info['logo']['savepath'] . 'thumb_' .$info['logo']['savename'];
         // 生成缩略图
         $image = new ThinkImage();
         // 打开要处理的图片
         $image->open($rootPath.$logoName);
         $image->thumb(150, 150)->save($rootPath.$smLogoName);
         // 把图片的表单放到表单中
         $data['logo'] = $logoName;
         $data['sm_logo'] = $smLogoName;
      }
   }
}


原文地址:https://www.cnblogs.com/yexiangwang/p/4928623.html