夺命雷公狗ThinkPHP项目之----企业网站6之栏目的添加(主要用模型来验证字段)
我们刚才的控制器已经写好了,那么我们现在就来完成我们的模型,
首先我们在Model目录下创建一个CategoryModel.class.php 代码如下:
<?php
namespace Admin\Model;
use Think\Model;
class CategoryModel extends Model{
protected $_validate = array(
//array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
array('cate_name','require','栏目中文名不能为空!',1,'regex',3), //默认情况下用正则进行验证,
//这里的1是必须验证
//regex正则验证,定义的验证规则是一个正则表达式(默认)
//3全部情况下验证
array('cate_ename','require','栏目英文名不能为空!'), //默认情况下用正则进行验证
);
}
然后我们回到我们的控制器CategoryController.class.php:
public function add(){
$cmod = D('Category');
if(IS_POST){
$data['cate_name'] = I('cate_name');
$data['cate_ename'] = I('cate_ename');
$data['cate_keywords'] = I('cate_keywords');
$data['cate_desc'] = I('cate_desc');
$data['cate_type'] = I('cate_type');
$data['cate_pid'] = I('cate_pid');
$data['cate_content'] = I('cate_content');
if($_FILES['cate_pic']['tmp_name']!=''){
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath = './'; //这个一定要加否则很容易中招
$upload->savePath = 'Public/Uploads/'; // 设置附件上传目录
$info = $upload->uploadOne($_FILES['cate_pic']);
if($info){
//这里组装sql语句,让图片融入$data['pic']里面
$data['cate_pic'] = $info['savepath'].$info['savename'];
}else{
$this->error($upload->getError());
}
}
//dump($_FILES); if($cmod->create($data)){
if($cmod->add()){
$this->success('添加栏目成功',U('Category/lists'));
}else{
$this ->error('添加栏目失败');
}
}else{
$this -> error($cmod->getError());
} return;
}
$this -> display();
}
然后我们再来写我们的视图页面:
因为涉及到上传,所以我们表单需要用到 enctype="multipart/form-data"
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>后台管理</title>
<link rel="stylesheet" type="text/css" href="__PUBLIC__/Admin/css/common.css"/>
<link rel="stylesheet" type="text/css" href="__PUBLIC__/Admin/css/main.css"/>
<script type="text/javascript" src="__PUBLIC__/Admin/js/libs/modernizr.min.js"></script>
<script type="text/javascript" src="__PUBLIC__/Admin/js/jq18m.js"></script>
<script type="text/javascript" src="__PUBLIC__/Admin/js/hileft.js"></script> <script type="text/javascript" charset="utf-8" src="__PUBLIC__/Ueditor/ueditor.config.js"></script> <script type="text/javascript" charset="utf-8" src="__PUBLIC__/Ueditor/ueditor.all.min.js"></script>
<script type="text/javascript" charset="utf-8" src="__PUBLIC__/Ueditor/lang/zh-cn/zh-cn.js"></script> </head>
<body> <include file="Public/header" /> <div class="container clearfix">
<include file="Public/left" />
<!--/sidebar-->
<div class="main-wrap"> <div class="crumb-wrap">
<div class="crumb-list"><i class="icon-font"></i><a href="/jscss/admin/design/">首页</a><span class="crumb-step">></span><a class="crumb-name" href="/jscss/admin/design/">作品管理</a><span class="crumb-step">></span><span>新增作品</span></div>
</div>
<div class="result-wrap">
<div class="result-content">
<form action="" method="post" id="myform" name="myform" enctype="multipart/form-data">
<table class="insert-tab" width="100%">
<tbody>
<tr> <th width="120"><i class="require-red">*</i>上级分类:</th>
<td>
<select name="cate_pid" id="catid" class="required">
<option value="">顶级分类</option>
</select>
</td>
</tr> <tr>
<th><i class="require-red">*</i>栏目中文名:</th>
<td>
<input class="common-text required" id="title" name="cate_name" size="50" value="" type="text">
</td>
</tr> <tr>
<th><i class="require-red">*</i>栏目英文名:</th>
<td><input class="common-text" name="cate_ename" size="50" value="admin" type="text"></td>
</tr> <tr>
<th>栏目关键词:</th>
<td><input class="common-text" name="cate_keywords" size="50" value="admin" type="text"></td>
</tr> <tr>
<th>栏目图片:</th>
<td><input name="cate_pic" id="" type="file"><!--<input type="submit" onclick="submitForm('/jscss/admin/design/upload')" value="上传图片"/>--></td>
</tr> <tr>
<th>栏目描述:</th>
<td>
<textarea name="cate_desc" style="margin: 0px; width: 609px; height: 157px;"></textarea>
</td>
</tr> <tr>
<th>栏目类型:</th>
<td>
封面栏目:<input type="checkbox" name="cate_type" value="0"> <br />
列表栏目:<input type="checkbox" name="cate_type" value="1"> <br />
产品栏目:<input type="checkbox" name="cate_type" value="2">
</td>
</tr> <tr>
<th>栏目内容:</th>
<td>
<textarea id="content" name="cate_content"></textarea>
</td>
</tr> <tr>
<th></th>
<td>
<input class="btn btn-primary btn6 mr10" value="提交" type="submit">
<input class="btn btn6" onclick="history.go(-1)" value="返回" type="button">
</td>
</tr>
</tbody></table>
</form>
</div>
</div> </div>
<!--/main-->
</div>
<script type="text/javascript">
UE.getEditor('content',{initialFrameWidth:890,initialFrameHeight:550});
//initialFrameWidth: null 这样就是他自动设置大小
</script>
<style type="text/css">
#edui2 div{
height:25px;
}
</style>
</body>
</html>
这样我们即可测试成功
夺命雷公狗ThinkPHP项目之----企业网站6之栏目的添加(主要用模型来验证字段)的更多相关文章
- 夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)
我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是 ...
- 夺命雷公狗ThinkPHP项目之----企业网站5之栏目的添加(主要是图片上传)
我们照老,先老搞定控CategoryController.class.php制器,代码如下所示: <?php namespace Admin\Controller; use Think\Cont ...
- 夺命雷公狗ThinkPHP项目之----企业网站11之栏目的删除完成
我们删除要在分类模型中添加一个_before_delete的钩子函数,而且在删除一个分类时候,如果这个分类有子分类就不允许删除 model层代码如下所示: <?php namespace Adm ...
- 夺命雷公狗ThinkPHP项目之----企业网站10之栏目的编辑完善(无限极分类的完成)
我们编辑首先就要考虑将下拉框效果实现出来,然后再进行下一步操作: 我们用到了Model层的操作,在第8讲里面其实已经写好了catTree方法,控制器如下所示: 然后在列表页然他变量进行输出 然后开始通 ...
- 夺命雷公狗ThinkPHP项目之----企业网站9之栏目的列表完善(无限极分类的完成)
我们刚才已经写好model了,那么这里直接来调用下他即可: public function lists(){ $mod = D('Category')->catTree(); $this -&g ...
- 夺命雷公狗ThinkPHP项目之----企业网站7之栏目的修改(主要用模型来验证字段)
我们照老,在控制器里面先查出我们所需要用到的数据: 然后直接遍历到模版上即可: 然后再开始写提交过来的数据处理问题(注意一定要接收修改页面通过隐藏域)而且我们刚才已经写好我们的model层了,所以直接 ...
- 夺命雷公狗ThinkPHP项目之----企业网站1之快速搭建后台
我们还是老规矩照老方法,将框架里面多余的东西都干掉,然后在index.php里面将框架搭建起来 <?php //定义项目目录 define('APP_PATH','./WEB/'); //开启调 ...
- 夺命雷公狗ThinkPHP项目之----企业网站17之网站配置页的添加
为了网站可以智能一点,所以我们开始来写一个网站配置的功能.. 所以我来写他的数据表: 先来完成他的添加功能,页面效果如下所示: lists.html代码如下所示: <!doctype html& ...
- 夺命雷公狗ThinkPHP项目之----企业网站28之网站前台左侧导航的实现
我们基于刚才在model层的找顶级分类的代码在进行修改即可: <?php namespace Home\Controller; use Think\Controller; class Commo ...
随机推荐
- ArcGIS API for Silverlight实现地图测距功能
原文:ArcGIS API for Silverlight实现地图测距功能 问题:如何实现地图测距功能? 地图工具栏 <Grid x:Name="gToolMenu" Hei ...
- sqlserver总结-视图及存储过程
视图中不能声明变量,不能调用存储过程,如果写比较复杂的查询,需要应用存储过程 视图也可以和函数结合 存储过程通过select或其他语句返回结果集 除此之外,存储过程返回结果只有两种方式 1 retur ...
- Number类型
这是计算基础,复杂的以后不充. 1.Number(); var box = { toString :function(){ return '123'; } }; alert(Number(box)); ...
- iOS:访问地址薄
地址簿的访问 介绍: 地址簿(Address Book)是一个共享的联系人信息数据库.任何iOS应用程序都可以使用.通过提供常用联系人信息,而不是让每一个应用程序管理独立的联系人列表,可改善用户体验. ...
- OpenJDK和JDK区别(转)
使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢? 历史上的 ...
- Linux命令行–基本的bash shell命令
启动shell: /etc/passwd:包含系统用户账户列表以及每个用户的基本配置信息 每个条目有七个字段,每个字段用冒号隔开 用户名 用户密码 用户的系统UID 用户的系统GID 用户的全名 用户 ...
- Linux命令行–初识Linux shell
shell及脚本简介 GNU/Linux shell 是个交互工具,它为用户提供了启动程序.管理文件系统上的文件以及管理运行在Linux系统上的进程的途径 . shell的核心是命令行提示符 它是s ...
- Java集合 List,Set,Map
一.List:.有顺序以线性方式存储,可以存放重复对象 线程安全方法:List list = Collections.synchronizedList(new LinkedList(...)); ...
- Silverlight/WPF绘制统计图Visifire.dll文件
官网:http://www.visifire.com/ 一直没找到好的中文文档,希望有的这个的可以发个我! 效果图: 前台代码: <UserControl x:Class="Text_ ...
- 如何在makefile中写cd命令
http://stackoverflow.com/questions/1789594/how-to-write-cd-command-in-makefile