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 \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

Thinkphp增加操作(Controller到模型Model的逻辑)的相关文章

thinkphp数据库操作Model模型

Model是对数据库的操作 之前两章已经说了MVC中的V(view)和C(controller),这一章主要讲M(model). 一.连接数据库 首先要创造一个操作数据库 之后打开shop查看原始配置 之后我们去配置自己的数据库 这样,数据库就配置好了. 二.创建model类 原则上来讲,一个model对应一个数据表,有一个数据表就要对应一个model 控制器如何创建,model就如何创建 注意: Model要和Admin以及Home平行存放,使得既能让Home使用,又能让Admin使用 创建一

ThinkPHP 模型(Model)命名规范

一个小问题搞了好久:如果数据库的表名中有下划线,那么在用thinkphp做自动完成时注意Model类的命名要变成驼峰法,文件名和类名都要变.( 另外注意:只有使用create方法创建数据时才能调用到自动验证和自动完成 ) ThinkPHP 模型(Model)命名规范 模型命名规范ThinkPHP 对数据库的表名和模型类的命名遵循一定的规范.首先数据库的表名和字段全部采用小写形式,模型类的命名规则是除去表前缀的数据表名称,并且首字母大写,然后加上模型类的后缀定义.一些例子如下:表名(不含前缀)模型

ThinkPHP 3.2.3 视图模型的使用

ThinkPHP 3.2.3 试图模型的手册地址是:http://www.kancloud.cn/manual/thinkphp/1781 实例 需求:在博客列表页读取博客的(id.标题.摘要.发布时间.点击次数)等信息以及该篇博文所属分类的(分类名)等信息 数据表: crm_blog +---------+----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | D

MVC增加操作日志

在后台管理中,有一些操作是需要增加操作日志的,尤其是对一些比较敏感的金额类的操作,比如商城类的修改商品金额.删除商品.赠送金额等人工的操作.日志中记录着相关操作人的操作信息,这样,出了问题也容易排查. 那么如何高效统一的处理增加这些日志呢?下面,分享一下我的思路及做法. 1.建日志相关表.需要建两个表,一是日志类型表(ActivityLogType),二是日志表(ActivityLog), 相关的表结构如下: 日志类型表:Id,SystemKeyword,Name,Enable (1 自动投标设

Thinkphp 空操作、空控制器、命名空间

1.空操作 空操作是指系统在找不到请求的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化. http://网址/index.php/Home/Main/login http://网址/index.php/Home/Main/hello  空操作 出现页面: 显示的错误信息过于详细,为安全以及优化页面起见,实行空操作 1.做一个_empty()方法.要在子类里面写,不要再父类里(推荐使用) function _empty() { ech

Django学习笔记(三)—— 模型 model

疯狂的暑假学习之 Django学习笔记(三)-- 模型 model 参考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # 用什么数据库管理系统 'NAME': '', # 数据库名称,如果用sqlite,要写完整路径 'USER': '', # 如果用sqlite,这个不用写 'PASSWORD': '', # 如果用sqlite,这个不用写

[计算机基础]关于实体( Entity )和模型( Model )

关于实体和模型: viki:实体(entity)是有可区别性且独立存在的某种事物,但它不需要是物质上的存在.尤其是抽象和法律拟制也通常被视为实体. 可见,实体就是软件系统中的研究对象.比如:学生信息管理系统中,学生这一概念就是一个实体,它是我们软件系统的主要研究对象 数据模型:在软件工程中,数据模型是定义数据如何输入和与输出的一种模型.其主要作用是为信息系统提供数据的定义和格式.数据模型是数据库系统的核心和基础,现有的数据库系统都是基于某种数据模型而建立起来的 这个概念更多出现在数据库系统中.它

ASP.NET MVC在布局页上使用模型(model)

看到这标题有点怪,一般情况之下,我们很容易在视图与部分视图中使用模型(model),但是如果想在布局页_Layout.cshtml页中使用模型(model),按照普通方式也许没有达到预期的效果,在实现时有些情况需要注意的. 下面先按原先我们的设计,在控控制器创建三个视图操作(Action): 创建一个布局页_May15.cshtml,然后上面的三个视图均引用此布局页. 现在我们根据控制器的Action分别创建三个视图,Index.cshtml: PageA.cshtml: PageB.cshtm

thinkPHP 连贯操作

在手册中的位置为 模型->连贯操作 一.常用连贯操作    1.where        帮助我们设置查询条件    2.order            对结果进行排序        $arr=$m->order('id desc')->select();        $arr=$m->order(array('id'=>'desc','sex'=>'asc'))->select();    3.limit            限制结果        lim