夺命雷公狗---Thinkphp----7之栏目配合Model的增删改查
我们首先来写一个查:

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"> | </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的增删改查的更多相关文章
- golang学习之beego框架配合easyui实现增删改查及图片上传
golang学习之beego框架配合easyui实现增删改查及图片上传 demo目录: upload文件夹主要放置上传的头像文件,main是主文件,所有效果如下: 主页面: 具体代码: <!DO ...
- 夺命雷公狗ThinkPHP项目之----企业网站24之网站前台获取当前栏目和顶级栏目
我们现在要实现的是取出网站当前栏目名称和顶级分类名称,如下所示: 列表页的和单页的不能总是写死的吧?? 我能就要想办法去让他变活的才可以解决问题噢,我们已经有了他的cate_id ,然后我们就可以通过 ...
- 夺命雷公狗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项目之----企业网站8之栏目的添加完善(无限极分类的完成)
我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是 ...
- 夺命雷公狗ThinkPHP项目之----企业网站7之栏目的修改(主要用模型来验证字段)
我们照老,在控制器里面先查出我们所需要用到的数据: 然后直接遍历到模版上即可: 然后再开始写提交过来的数据处理问题(注意一定要接收修改页面通过隐藏域)而且我们刚才已经写好我们的model层了,所以直接 ...
- 夺命雷公狗ThinkPHP项目之----企业网站6之栏目的添加(主要用模型来验证字段)
我们刚才的控制器已经写好了,那么我们现在就来完成我们的模型, 首先我们在Model目录下创建一个CategoryModel.class.php 代码如下: <?php namespace Adm ...
- 夺命雷公狗ThinkPHP项目之----企业网站5之栏目的添加(主要是图片上传)
我们照老,先老搞定控CategoryController.class.php制器,代码如下所示: <?php namespace Admin\Controller; use Think\Cont ...
随机推荐
- php-- Linux图形界面与字符界面切换
转自:http://blog.163.com/wang_ly2442/blog/static/9494340720128355054551/ 1. 启动时进入字符界面,后来想切换到图形界面:使用sta ...
- android游戏动画特效的一些处理
游戏中避免不了需要一些动画特效的处理,有些是不方便用美术或者美工来处理的,那么就由我们程序猿来搞了.直接进入正题. 首先是Animation,Animation针对view,可以控制view的位移.缩 ...
- 1057 N的阶乘
1057 N的阶乘 基准时间限制:1 秒 空间限制:131072 KB 输入N求N的阶乘的准确值. Input 输入N(1 <= N <= 10000) Output 输出N的阶乘 Inp ...
- Subway---poj2502(最短路)
题目链接:http://poj.org/problem?id=2502 人走路的速度是10km/h,地铁的速度是40km/h题目给出一个起点,一个终点,以及几条地铁线路运行的站点.题目给的点的做坐标单 ...
- JavaScript实现在文本框中输入空格时自动填写某个值
<script language="javascript" type="text/javascript"> var txtText4 = " ...
- Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统 nsswitch.conf配置文件
Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统 nsswitch.conf配置文件 朋友们,今天我对你们说,在此时此刻,我们虽然遭受种种困难和挫折,我仍然有一个梦 ...
- popen&pclose管道方式操作shell命令
popen, pclose - pipe stream to or from a process FILE *popen( const char *command, const char *type) ...
- myeclipse WIN7下设置字体列表中无Courier New
到"C:\Windows\Fonts"下找到对应的字体,单击,选择上面的显示 然后就可以在eclicpse字体设置里面看到Courier New项了: Eclipse字体设置方法: ...
- ios-点击图片放大,背景变半透明
在view中点击一个图片,图片放大,背景变半透明,图片不会变透明的效果图如下 思路:图片框是一个按钮,监听点击事件. 当点击图片后:改变图片的frame,使图片放大,并且在controller.vie ...
- Function.prototype.bind接口浅析
本文大部分内容翻译自 MDN内容, 翻译内容经过自己的理解. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Glo ...