今晚继续我的这个项目的开发,今晚也是写的不多,主要写了一个菜单管理功能的CURD方法,前端界面还没有进行编写。

  菜单管理Model层的代码:

<?php
namespace Common\Model;
use Think\Model; class MenuModel extends Model{
private $_db=''; public function __construct(){
$this->_db=M("menu");
} /**
* 插入菜单数据
*/
public function insert($data=array()){
if(!data || !is_array($data)){
return 0;
} return $this->_db->add($data);
} /**
* 获取菜单数据
*/
public function getMenus($data,$pageIndex,$pageSize=10){
$data['status']=array('neq',-1);
$offset=($pageIndex-1)*$pageSize;
$list=$this->_db->where($data)->order('listorder desc,menu_id desc')->limit($offset,$pageSize);
return $list;
} /**
* 获取菜单总数
*/
public function getMenusCount($data=array()){
$data['status']=array('neq',-1);
return $this->_db->where($data)->count();
} /**
* 根据ID获取菜单ID
*/
public function find($id){
if(!$id || !is_numeric($id)){
return array();
}
return $this->_db->where("menu_id={}$id")->find();
} /**
* 根据ID更新菜单
*/
public function updateMenuById($id,$data){
if(!$id || !is_numeric($id)){
throw_exception("ID不合法");
} if(!$data || !is_array($data)){
throw_exception('更新的数据不合法');
} return $this->_db->where("menu_id={$id}")->save($data);
} /**
* 更新排队序号
*/
public function updateMenuListOrderById($id,$listorder){
if(!$id || !is_numeric($id)){
throw_exception('ID不合法');
}
$data=array(
'listorder'=>intval($listorder);
); return $this->_db->where("menu_id={$id}")->save($data);
} /**
* 获取后台菜单
*/
public function getAdminMenus(){
$data=array(
'status'=>array('neq',-1),
'type'=>1
); return $this->_db->where($data)->order('listorder desc,menu_id desc')->select();
} /**
* 获取前台菜单
*/
public function getBarMenus(){
$data=array(
'status'=>1,
'type'=>0
);
return $this->_db->where($data)->order('listordre desc,menu_id desc')->select();
}
}
?>

    菜单管理控制器类的代码:

<?php
namespace Admin\Controller;
use Think\Controller; class MenuController extends CommonController{ public function index(){
$data=array();
if(isset($_REQUEST['type']) && in_array($_REQUEST, array(0,1))){
$data['type']=intval($_REQUEST['type']);
$this->assign('type',$data['type']);
}else{
$this->assign('type',-100);
}
} public function add(){
if($_POST){
if(!isset($_POST['name']) || !$_POST['name']){
return jsonResult(0, '菜单名不能为空');
}
if(!isset($_POST['m']) || !$_POST['m']){
return jsonResult(0, '模块名不能为空');
}
if(!isset($_POST['c']) || !$_POST['c']){
return jsonResult(0, '控制器不能为空');
}
if(!isset($_POST['f']) || !$_POST['f']){
return jsonResult(0, '方法名不能为空');
}
if($_POST['menu_id']){
return $this->save($_POST);
}
$menuId=D("Menu")->insert($_POST);
if($menuId){
return jsonResult(1, '新增成功', $menuId);
}
return jsonResult(0, '新增失败', $menuId);
}else{
$this->display();
}
} public function edit(){
$menuId=$_REQUEST['id'];
$menu=D("Menu")->find($menuId);
$this->assign('menu',$menu);
$this->display();
} public function save($data){
$menuId=$data['menu_id'];
unset($data['menu_id']); try{
$id=D("Menu")->updateMenuById($menuid,$data);
if($id===FALSE){
return jsonResult(0, '保存失败');
}
return jsonResult(0,'保存成');
}catch(Exception $ex){
return jsonResult(0,$ex->getMessage());
}
} public function setStatus(){
try{
if($_POST){
$id=$_POST['id'];
$status=$_POST['status'];
$ret=D("Menu")->updateStatusById($id,$status);
if($ret){
return jsonResult(1,'操作成功');
}else{
return jsonResult(0,'操作失败');
}
}
}catch(Exception $ex){
return jsonResult(0,$ex->getMessage());
}
return jsonResult(0,'没有提交数据');
} /**
* 数据排序
*/
public function listorder(){
$listoreder=$_POST['listorder'];
$data =array('jump_url'=> $_SERVER['HTTP_REFERER']);
$errors=array();
if($listoreder){
try{
foreach($listorder as $emnuId=>$v){
$id=D("Menu")->updateMenuListorderById($menuId,$v);
if($id===false){
$errors[]=$menuId;
}
}
}catch(Exception $ex){
return jsonResult(0, $ex->getMessage(), $data)
}
if($errors){
return jsonResult(0,"排序失败-".implode(',', $errors), $data);
}
return jsonResult(1, '排序成功', $data)
}
return jsonResult(0,'数据排序失败', $data);
}
}
?>

  今晚就暂时写这么点,明晚开始做前端的开发,明天就周五了,如果周六不用加班,我会加大马力在这周内结束该项目的。(^_−)☆

源码地址:https://github.com/YoZiLin/TP-CMS

前端到后台ThinkPHP开发整站(4)的更多相关文章

  1. 前端到后台ThinkPHP开发整站--php开发案例

    前端到后台ThinkPHP开发整站--php开发案例 总结 还是需要做几个案例,一天一个为佳,那样才能做得快. 从需求分析着手,任务体系要构建好,这样才能非常高效. 转自: 前端到后台ThinkPHP ...

  2. 前端到后台ThinkPHP开发整站(2)

    我这次使用的ThinkPHP版本是:3.2.3版本,还有会使用到一个弹出层插件,叫 layer,官网地址是:http://layer.layui.com/.废话不多说,进入撸码环节. 1.通用方法编写 ...

  3. 前端到后台ThinkPHP开发整站(6)

    今天终于把整个后台管理系统弄好了,其实没什么难点,只是作为一个Thinphp学习的练手项目,这个项目,现在还只能算是做了一半,还有前台展示方面的功能没有完成.先过一遍后台的功能吧! 1.首页 2.菜单 ...

  4. 前端到后台ThinkPHP开发整站(5)

    今天周五了,这个项目做了五个晚上了,明天周末不用上班有一整天的时间来结束这个项目了,今晚主要把后台界面给弄出来了. 大概的整个后台界面就是这个样子了,接下来的工作就是搬砖了,一个个菜单功能填上去就是了 ...

  5. 前端到后台ThinkPHP开发整站(1)

    1.前言: 我个人从来没有写过博客文章,作为一个程序员没有自己的博客算是一个合格的程序员,所以我地想想也要经营起一个的博客,做一个小项目,写这博客算就做这个项目的一个项目笔记吧!现在自学着ThinkP ...

  6. 前端到后台ThinkPHP开发整站(3)

    继续我的这个项目的第三晚的开发了,时间比较少,今晚写的代码不多,今晚仍然是造轮子写一个公共的控制器和一个公共的JS.直接上代码吧! 以下是一个公共的控制器,后台控制器都继承于它,构造函数中进行验证当前 ...

  7. 前端到后台ThinkPHP开发整站(7)

    今晚我继续这个项目的前台开发,把前台的做出来了,现在项目进行一个收尾工作了,还有栏目页和一个文章页的开发,做完这两个算是完成了.说到这里感觉有点松懈了,把剩下两个功能页面做完在吹吧,先看看今天弄的代码 ...

  8. 前端到后台ThinkPHP开发整站(完)

    久违了,今天终于抽空把最后的写完了,这是这个项目的最后一篇文章了,把前台的栏目控制器和文章内容控制器的功能实现了. 栏目控制器: <?php namespace Home\Controller; ...

  9. 前端资源多个产品整站一键打包&包版本管理(一)

    来新公司工作的第五个月.整站资源打包管理也提上了日程. 问题: 首先.什么是整站的打包管理呢? 我们公司的几个重要产品都在同一个webapp里面,但是,不同的开发部门独立开发不同的产品,长期以来,我们 ...

随机推荐

  1. vijos1011题解

    题目:      顺治喜欢滑雪,这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待太监们来载你.顺治想知道载一个区域中最长的滑坡.区域 ...

  2. Sublime Text 关闭自动更新的办法

    解决关于Submit Text每次打开 都会跳出更新选项的问题 Windows 下: 打开 Preferences —— Settings—User { "color_scheme" ...

  3. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)A B题

    当时晚上打CF时候比较晚,加上是集训期间的室友都没有晚上刷题的习惯,感觉这场CF很不在状态.A题写复杂WA了一发后去厕所洗了个脸冷静了下,换个简单写法,可是用cin加了ios::sync_with_s ...

  4. linux中日志介绍

    linux日志 linux日志大多是以明文存储,一般存储在/var/log目录中,linux系统中主要有三个日志子系统:连接时间日志,进程统计日志,错误日志. 连接时间日志 连接时间日志是有多个程序执 ...

  5. STL—vector空间的动态增长

    vector空间的动态增长     当添加元素时,如果vector空间大小不足,则会以原大小的两倍另外配置一块较大的新空间,然后将原空间内容拷贝过来,在新空间的内容末尾添加元素,并释放原空间.vect ...

  6. thinkphp分页带数据

    因为用thinkphp做分页时候点击下一页后搜索栏的数据会清空,然后点击下一页后刷新完了就没有内容了,感觉网上查找和我自己研究在不适用ajax做分页的情况下用以下代码就可以实现!!通过把值扔地址栏来进 ...

  7. Oracle 10gR2分析函数

    Oracle 10gR2分析函数汇总 (Translated By caizhuoyi 2008‐9‐19) 说明:  1. 原文中底色为黄的部分翻译存在商榷之处,请大家踊跃提意见:  2. 原文中淡 ...

  8. Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等

    本节及后面的内容将会探索更加有意思的内容,更加逼近实际的使用的内容.我们本节内容不难,讲的是释放Ability时的信息传递: 第一步:创建一个GA称为GA_AOE_BlindVengeance,复仇忌 ...

  9. 使用Nginx+CppCMS构建高效Web应用服务器(之三)

    使用Nginx+CppCMS构建高效Web应用服务器(之三) --充分利用服务器和客户端计算能力 欢迎测试,攻击:http://www.litelottery.com     网页右上角,选择博彩,演 ...

  10. LCS 51Nod 1134 最长递增子序列

    给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10.   Input 第1行:1个 ...