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

  继续我的这个项目的第三晚的开发了,时间比较少,今晚写的代码不多,今晚仍然是造轮子写一个公共的控制器和一个公共的JS。直接上代码吧!

  以下是一个公共的控制器,后台控制器都继承于它,构造函数中进行验证当前用户是否登录状态和提供快获取当前登录用户的数据。

<?php
namespace Admin\Controller;
use Think\Controller;

/**
 * 后台管理公共控制器
 */
class CommonController extends Controller{
	public function __construct(){
		parent::__construct();
		$this->_init();
	}

	/**
	 * 初始化
	 */
	private function _init(){
		// 如果已经登录
		$isLogin=$this->isLogin();
		if(!$isLogin){
			//跳转到登录页面
			$this->redirect(‘/admin.php?c=login‘);
		}
	}

	/**
	 * 获取当前登录用户信息
	 */
	public function getLoginUser(){
		return session(‘adminUser‘);
	}

	/**
	 * 判断是否登录
	 */
	public function isLogin(){
		$user=$this->getLoginUser();
		return ($user && is_array($user));
	}

	/**
	 * 更新数据状态
	 */
	public function setStatus($data,$models){
		try{
			if($_POST){
				$id=$data[‘id‘];
				$status=$data[‘status‘];
				if(!$id){
					return jsonResult(0, ‘ID不存在‘);
				}
				$ret=D($models)->updateStatusById($id,$status);
				if($ret){
					return jsonResult(1, ‘操作成功‘);
				}else{
					return jsonResult(0, ‘操作失败‘);
				}
			}
			return jsonResult(0,‘没有提交的内容‘);
		}catch(Exception $ex){
			return jsonResult(0, $e->getMessage());
		}
	}

	/**
	 * 数据排序
	 */
	public function listorder($model=‘‘){
		$listorder=$_POST[‘listorder‘];
		$jumpUrl=$_SERVER[‘HTTP_REFERER‘];
		$errors=array();
		$resultData=array(‘jump_url‘=>$jumpUrl);
		try{
			if($listorder){
				foreach($listorder as $id=>$v){
					$id=D($model)->updateListorderById($id,$v);
					if($id===FALSE){
						$errors[]=$id;
					}
				}
				if(array_count_values($errors)>0){
					$group=implode(‘,‘, $errors);
					return jsonResult(0, "排序失败-{$group}", $data,$resultData);
				}
				return jsonResult(1, ‘排序成功‘, $resultData);
			}
		}catch(Exception $ex){
			return jsonResult(0, $ex->getMessage());
		}
		return jsonResult(0, ‘排序失败‘, $resultData);
	}
}
?>

  以下一段JS,主要是做一些表单操作的方法。

var common = function(queryDom) {
	if(!queryDom){
		console.error(‘请传入需要操作的DOM选择字符‘);
		return;
	}
	function commonObj() {
		this.dom = ‘‘;
	}

	function todelete(url, data) {
		$.post(
			url,
			data,
			function(s) {
				if(s.status == 1) {
					return dialog.success(s.message, ‘‘);
					// 跳转到相关页面
				} else {
					return dialog.error(s.message);
				}
			}, "JSON");
	}

	/**
	 * 提交form表单操作
	 */
	commonObj.prototype.add = function(formDom, func) {
		$(this.dom).click(function() {
			var data = $(formDom).serializeArray();
			postData = {};
			$(data).each(function(i) {
				postData[this.name] = this.value;
			});
			console.log(postData);
			// 将获取到的数据post给服务器
			url = SCOPE.save_url;
			jump_url = SCOPE.jump_url;
			$.post(url, postData, function(result) {
				if(result.status == 1) {
					//成功
					if(typeof(func) == ‘function‘) {
						func();
					} else {
						return dialog.success(result.message, jump_url);
					}
				} else if(result.status == 0) {
					// 失败
					return dialog.error(result.message);
				}
			}, "JSON");
		});
	}

	/**
	 * 编辑模块
	 */
	commonObj.prototype.click = function() {
		$(this.dom).on(‘click‘, function() {
			var id = $(this).attr(‘attr-id‘);
			var url = SCOPE.edit_url + ‘&id=‘ + id;
			window.location.href = url;
		});
	}

	/*
	 * 删除操作
	 */
	commonObj.prototype.delete = function() {
		$(this.dom).on(‘click‘, function() {
			var id = $(this).attr(‘attr-id‘);
			var a = $(this).attr("attr-a");
			var message = $(this).attr("attr-message");
			var url = SCOPE.set_status_url;

			data = {};
			data[‘id‘] = id;
			data[‘status‘] = -1;

			layer.open({
				type: 0,
				title: ‘是否提交?‘,
				btn: [‘yes‘, ‘no‘],
				icon: 3,
				closeBtn: 2,
				content: "是否确定" + message,
				scrollbar: true,
				yes: function() {
					// 执行相关跳转
					todelete(url, data);
				},
			});
		});
	}

	/**
	 * 排序操作
	 */
	commonObj.prototype.order = function() {
		$(this.dom).click(function() {
			// 获取 listorder内容
			var data = $("#singcms-listorder").serializeArray();
			postData = {};
			$(data).each(function(i) {
				postData[this.name] = this.value;
			});
			console.log(data);
			var url = SCOPE.listorder_url;
			$.post(url, postData, function(result) {
				if(result.status == 1) {
					//成功
					return dialog.success(result.message, result[‘data‘][‘jump_url‘]);
				} else if(result.status == 0) {
					// 失败
					return dialog.error(result.message, result[‘data‘][‘jump_url‘]);
				}
			}, "JSON");
		});
	}

	/**
	 * 更改状态
	 */
	commonObj.prototype.updateStatus = function() {
		$(this.dom).on(‘click‘, function() {
			var id = $(this).attr(‘attr-id‘);
			var status = $(this).attr("attr-status");
			var url = SCOPE.set_status_url;
			data = {};
			data[‘id‘] = id;
			data[‘status‘] = status;
			layer.open({
				type: 0,
				title: ‘是否提交?‘,
				btn: [‘yes‘, ‘no‘],
				icon: 3,
				closeBtn: 2,
				content: "是否确定更改状态",
				scrollbar: true,
				yes: function() {
					// 执行相关跳转
					todelete(url, data);
				},
			});
		});
	}

	commonObj.prototype.push = function() {
		$(this.dom).click(function() {
			var id = $("#select-push").val();
			if(id == 0) {
				return dialog.error("请选择推荐位");
			}
			push = {};
			postData = {};
			$("input[name=‘pushcheck‘]:checked").each(function(i) {
				push[i] = $(this).val();
			});

			postData[‘push‘] = push;
			postData[‘position_id‘] = id;
			//console.log(postData);return;
			var url = SCOPE.push_url;
			$.post(url, postData, function(result) {
				if(result.status == 1) {
					// TODO
					return dialog.success(result.message, result[‘data‘][‘jump_url‘]);
				}
				if(result.status == 0) {
					// TODO
					return dialog.error(result.message);
				}
			}, "json");

		});
	}

	return new commonObj();
}

  今晚就弄了那么点,反正慢慢来,不会有人催我项目进度的,主要是自己能坚持把这个项目做完。代码写到这里天色已晚,困了,都没去运行下,肯定会有些BUG的了,等一个模块开发完再去调试代码吧!

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

时间: 2024-10-04 18:08:22

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

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

我这次使用的ThinkPHP版本是:3.2.3版本,还有会使用到一个弹出层插件,叫 layer,官网地址是:http://layer.layui.com/.废话不多说,进入撸码环节. 1.通用方法编写 这个是后端公共方法,现在暂时写两个方法,再往后开发想到有需要的话,就会继续添加更多的公共方法. <?php /** * JSON数据返回 */ function jsonResult($status,$message,$data){ $result=array({ 'status'=>$stat

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

今天周五了,这个项目做了五个晚上了,明天周末不用上班有一整天的时间来结束这个项目了,今晚主要把后台界面给弄出来了. 大概的整个后台界面就是这个样子了,接下来的工作就是搬砖了,一个个菜单功能填上去就是了. 还有补充了下多个公共方法,为后面菜单开发而准备. <?php /** * JSON数据返回 */ function jsonResult($status,$message,$data){ $result=array( 'status'=>$status, 'message'=>$mess

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

1.前言: 我个人从来没有写过博客文章,作为一个程序员没有自己的博客算是一个合格的程序员,所以我地想想也要经营起一个的博客,做一个小项目,写这博客算就做这个项目的一个项目笔记吧!现在自学着ThinkPHP,就借此框架做一个CMS系统.废话不多说了,赶紧进入学习了. 2.需求分析: 功能分析:  一.登录退出功能.  二.菜单功能:涉及前端菜单导航设置.  三.文章管理:文章编写,编辑插件掌握,异步图片上传.  四.推荐位管理:让用户自行设定首页推荐文章显示的设定.  五.用户管理:管理后台登录的

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

今晚继续我的这个项目的开发,今晚也是写的不多,主要写了一个菜单管理功能的CURD方法,前端界面还没有进行编写. 菜单管理Model层的代码: <?php namespace Common\Model; use Think\Model; class MenuModel extends Model{ private $_db=''; public function __construct(){ $this->_db=M("menu"); } /** * 插入菜单数据 */ pu

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

今晚我继续这个项目的前台开发,把前台的做出来了,现在项目进行一个收尾工作了,还有栏目页和一个文章页的开发,做完这两个算是完成了.说到这里感觉有点松懈了,把剩下两个功能页面做完在吹吧,先看看今天弄的代码吧! 前台公共控制器: <?php namespace Home\Controller; use Think\Controller; class CommonController extends Controller { public function __construct() { header(

前端后台ThinkPHP开发整站

课程目录及下载链接: 第1章 课程简介介绍singcms内容管理系统,系统中各功能模块展示,技术点介绍及课前准备.第2章 需求分析分析系统中的所有功能,设计系统中的数据库表.第3章 thinkphp介绍ThinkPHP框架介绍.第4章 后台登录功能介绍后台登录功能,数据校验,dialog插件介绍,layer插件介绍以及利用session失效处理退出登录第5章 菜单管理介绍后台入口文件的优化,公共文件的引入,菜单的添加.修改.删除功能,菜单列表分页及排序等功能的实现.第6章 文章管理介绍图片异步上

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

来新公司工作的第五个月.整站资源打包管理也提上了日程. 问题: 首先.什么是整站的打包管理呢? 我们公司的几个重要产品都在同一个webapp里面,但是,不同的开发部门独立开发不同的产品,长期以来,我们就不知道其他部门的在做什么,或许我们正在头疼的问题,隔壁部门已经早早解决了呢? 各个部门的前端资源也是到处都是.难以管理.于是就提出了整站资源共享.整站资源共享的前提就是资源打包能统一.在几个产品里面.既有使用grunt的也有使用glup的,各个产品引入的包的版本也不一样. 目标: 统一打包工具 对

网页设计、web前端、后台的开发流程和注意事项 -----转

工作2年了,总感觉每次做项目的时候,都是赶时间,赶时间,加班几班,可是最后总结一看,百分之50的时间都浪费在做无用功上面了,甚至因为设计人员的失误,造成了前端和程序大量的返工,休整,加班,造成了开发人员的疲惫. 我个人总结了一下觉得认为比较好的能够节省时间效率的工作流程应该是: 1.产品经理做出整体的构思,提出明确需求,并且形成文档和demo 包括:网站的中心思想,即属于什么类型的,是电子商务还是企业网站还是门户网站等,不同类型的网站风格定位就不一样,一个网站需要注意的地方,例如登录注册的页面,

野生程序员是指仅凭对计算机开发的兴趣进入这个行业,从前端到后台一手包揽,但各方面能力都不精通的人(转)

本文摘自:<Web 全栈工程师的自我修养> 野生程序员是指仅凭对计算机开发的兴趣进入这个行业,从前端到后台一手包揽,但各方面能力都不精通的人.野生程序员有很强大的单兵作战能力,但是在编入“正规军”之后,可能会不适应新的做事方法. 遭遇“野生程序员” 腾讯公司内部的团队很多,在团队管理上有项目和专业两个维度.也就是说,有些团队是项目维度的,整个团队共同维护一个产品,成员来自不同的职业岗位:有些团队是专业维度的,比如一个组都是前端工程师,维护不同的产品. 因为前端组是设计部最接近后台技术的团队,所