我们首先来写一个查:

public function lists(){
$type = M('Type')->select();
$this -> assign('type',$type);
$this -> display();
}

然后到模板页里让它用volist进行正常的显示:

      <volist name="type" id="vo">
<tr onMouseOut="this.style.backgroundColor='#ffffff'" onMouseOver="this.style.backgroundColor='#edf5ff'">
<td align="center" valign="middle" class="borderright borderbottom">{$vo['id']}</td>
<td align="center" valign="middle" class="borderright borderbottom">{$vo['typename']}</td>
<td align="center" valign="middle" class="borderbottom">
<a href="__CONTROLLER__/edit/id/{$vo['id']}" target="mainFrame" onFocus="this.blur()" class="add">编辑</a>
<span class="gray">&nbsp;|&nbsp;</span>
<a href="__CONTROLLER__/del/id/{$vo['id']}" target="mainFrame" onclick="return confirm('您确定要删除');" onFocus="this.blur()" class="add">删除</a>
</td>
</tr>
</volist>

下一步就开始写他的增加了,增加时候如果需要用到Model对提交过来的数据进行验证,那么就必须使用D来对她进行验证即可,控制器如下所示:

    public function add(){
if(IS_POST){
$data['typename'] = $_POST['typename'];
$mod = D('Type');
if($mod->create($data)){
if($mod->add($data)){
$this -> success('添加栏目成功',U('Type/lists'));
}else{
$this -> error('添加栏目失败');
}
}else{
$this -> error($mod->getError());
}
} $this -> display();
}

这里写好了然后就开始写他的Model层了,这里主要是让他不能为空和不能重复出现即可:

<?php
namespace Admin\Model;
use Think\Model;
class TypeModel extends Model{
protected $_validate = array(
//array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
array('typename','require','栏目名不能为空!'), //默认情况下用正则进行验证
array('typename','','栏目名已经存在!',0,'unique',1) // 在新增的时候验证name字段是否唯一
);
}

模版代码如下所示:

添加这里其实是完全可以通过查询手册即可知道怎么写的了,查询方法如下所示:

这里几乎是完全记录着如何可以实现的。。。

下一步就到他的改了,这里其实更加的简单了,直接在列表页里面带多一个 id 过去问题即可解决,如下所示:

下一步就到开始写他的控制器了,不过要先将数接收到的id去获取到指定的数据,然后再通过接收到的表单进行修改,代码如下所示:

    public function edit(){
$id = I('id');
if(IS_POST){
if(!empty($_POST['typename'])){
$data['typename'] = $_POST['typename'];
$data['id'] = I('id');
$mod = D('Type');
if($mod -> create($data,1)){ //这里的这个1主要作用是在编辑时候验证
if($mod->save()){
$this -> success('修改栏目成功',U('Type/lists'));
}else{
$this -> error('修改栏目失败');
}
}else{
$this -> error($mod->getError());
}
}else{
$this -> error('修改栏目失败');
}
}
$mod = M('Type')->find($id);
$this -> assign('type',$mod);
$this-> display();
}

编辑页模版如下所示:

修改这个其实也是最容易的这个了,只要在列表页里面加一个id让他带到del方法即可,如下所示:

我们在控制器接收他发送过来的id让后对她进行删除处理即可:

    public function del(){
$id = I('id');
if(M('Type')->delete($id)){
$this -> success('删除栏目成功',U('Type/lists'));
}else{
$this -> error('删除栏目失败');
}
}

这样下来我们一套的增删改查即可完成

夺命雷公狗---Thinkphp----7之栏目配合Model的增删改查的更多相关文章

  1. golang学习之beego框架配合easyui实现增删改查及图片上传

    golang学习之beego框架配合easyui实现增删改查及图片上传 demo目录: upload文件夹主要放置上传的头像文件,main是主文件,所有效果如下: 主页面: 具体代码: <!DO ...

  2. 夺命雷公狗ThinkPHP项目之----企业网站24之网站前台获取当前栏目和顶级栏目

    我们现在要实现的是取出网站当前栏目名称和顶级分类名称,如下所示: 列表页的和单页的不能总是写死的吧?? 我能就要想办法去让他变活的才可以解决问题噢,我们已经有了他的cate_id ,然后我们就可以通过 ...

  3. 夺命雷公狗ThinkPHP项目之----企业网站11之栏目的删除完成

    我们删除要在分类模型中添加一个_before_delete的钩子函数,而且在删除一个分类时候,如果这个分类有子分类就不允许删除 model层代码如下所示: <?php namespace Adm ...

  4. 夺命雷公狗ThinkPHP项目之----企业网站10之栏目的编辑完善(无限极分类的完成)

    我们编辑首先就要考虑将下拉框效果实现出来,然后再进行下一步操作: 我们用到了Model层的操作,在第8讲里面其实已经写好了catTree方法,控制器如下所示: 然后在列表页然他变量进行输出 然后开始通 ...

  5. 夺命雷公狗ThinkPHP项目之----企业网站9之栏目的列表完善(无限极分类的完成)

    我们刚才已经写好model了,那么这里直接来调用下他即可: public function lists(){ $mod = D('Category')->catTree(); $this -&g ...

  6. 夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)

    我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是 ...

  7. 夺命雷公狗ThinkPHP项目之----企业网站7之栏目的修改(主要用模型来验证字段)

    我们照老,在控制器里面先查出我们所需要用到的数据: 然后直接遍历到模版上即可: 然后再开始写提交过来的数据处理问题(注意一定要接收修改页面通过隐藏域)而且我们刚才已经写好我们的model层了,所以直接 ...

  8. 夺命雷公狗ThinkPHP项目之----企业网站6之栏目的添加(主要用模型来验证字段)

    我们刚才的控制器已经写好了,那么我们现在就来完成我们的模型, 首先我们在Model目录下创建一个CategoryModel.class.php 代码如下: <?php namespace Adm ...

  9. 夺命雷公狗ThinkPHP项目之----企业网站5之栏目的添加(主要是图片上传)

    我们照老,先老搞定控CategoryController.class.php制器,代码如下所示: <?php namespace Admin\Controller; use Think\Cont ...

随机推荐

  1. .NET基础加强,找工作之前可以看看这些............

    .NET基础知识加强: 1  变量命名规则:骆驼命名法:第一个字母小写之后的首字母大写,[对于方法名和类名首字母大写]→培养良好的命名规范. 2  构造函数:没有返回值,方法名和类名相同,每个类中都有 ...

  2. 另一个SqlParameterCollection中已包含SqlParameter

    一般情况下,我们定义的一个SqlParameter参数数组,如: SqlParameter[] parms =             {                new SqlParamete ...

  3. 替换SearchBar 键盘上的 搜索 按钮

    for (UIView *searchBarSubview in [searchBar subviews]) {        if ([searchBarSubview conformsToProt ...

  4. GCD Demo (先存起来自己看)

    // 原代码块一 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 原代码块二 N ...

  5. androidSDK配置环境变量

    android的开发人员来说,首先要做的就是环境变量的配置.java是需要配置环境变量的.当然,安卓的环境变量需要我们配置adb的使用,将开发平台的两个工具包配置到环境变量里. 工具/原料   and ...

  6. ZooKeeper常见问题(转)

    这段时间来,也在和公司里的一些同学交流使用zk的心得,整理了一些常见的zookeeper问题.这个页面的目标是解答一些zk常见的使用问题,同时也让大家明确zk不能干什么.页面会一直更新. 客户端 1. ...

  7. iOS小技巧2

    这段代码是实现了类似QQ空间"我的空间"里面的圆形头像 //圆形的头像 UIImageView * headImage = [[UIImageView alloc]initWith ...

  8. javascript_获取iframe框架中元素节点的属性值

    1. DOM:文档对象模型 [window 对象] 它是一个顶层对象,而不是另一个对象的属性即浏览器的窗口. [document 对象] 该对象是window和frames对象的一个属性,是显示于窗口 ...

  9. [MVCSharp]MVC# Overview概述

    MVC# Overview概述 Abstract: This article gives an overview of MVC# - a Model-View-Presenter framework ...

  10. Fluentd 例子

    0. 安装.启动 安装 curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh 更新:最近貌似会安装 ...