一、控制器逻辑处理
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;
}
}
}