• 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;
          }
       }
    }


  • 相关阅读:
    unordered_set
    树的所有实现
    各类算法模板
    单链表全部实现(绝对史上最完整 附例题)
    求最长回文子串
    无重复的最长子串
    秋叶集
    1451. 重新排列句子中的单词
    152. 乘积最大子数组
    JVM总结的部分内容
  • 原文地址:https://www.cnblogs.com/yexiangwang/p/4928623.html
Copyright © 2020-2023  润新知