一、控制器逻辑处理 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 \Think\Upload(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 \Think\Image(); // 打开要处理的图片 $image->open($rootPath.$logoName); $image->thumb(150, 150)->save($rootPath.$smLogoName); // 把图片的表单放到表单中 $data[‘logo‘] = $logoName; $data[‘sm_logo‘] = $smLogoName; } }}
时间: 2024-12-12 05:30:54