#### 1管理员页面
```
@extends("layout.main")
@section("content")
 首页 > 用户中心 > 用户管理 
 搜用户
 添加用户
ID
用户名
性别
手机
邮箱
加入时间
状态
操作
@endsection
@section("footerjs")
$(function(){
mydatatable \= $('.table-sort').dataTable({
"lengthMenu": \[ 3,10, 20, 30 \],
"paging":true,
"info":true,
"searching":false,
"ordering":true,
"order": \[\[ 0, "desc" \]\],
"columnDefs": \[{
"targets": \[1,2,3,4,5,6,7\],
"orderable":false
}\],
"processing":true,
"serverSide":true,
"ajax": {
"url": "{{url('admin/users')}}",
"type": "post",
'headers': {
'X-CSRF-TOKEN' : '{{ csrf\_token() }}'
},
'data':function(d){
d.datemin\=$('#datemin').val();
d.datemax\=$('#datemax').val();
d.keyword\=$('#keyword').val();
}
},
"columns": \[
{'data':'id'},
{'data':'name'},
{'data':'sex'},
{'data':'phone'},
{"data": "email"},
{'data':'created\_at'},
{'data':'status'},
{"defaultContent": "","className":"td-manager"},
\],
"createdRow":function(row,data,dataIndex){
//数据填充的回调函数,每个"tr"被绘制的时候会调用该函数
//row:被绘制的tr的dom对象
//data:该tr行对应的一条数据记录信息
//dataIndex:是该tr的下表索引号码
if(data.status\==1){
var status \='已启用';
}else{
var status\='已停用';
}
$(row).find('td:eq(6)').html(status);
var anniu \= '';
//把anniu填充给最后一个td里边
$(row).find('td:eq(7)').html(anniu);
if(data.sex\==1){
$(row).find('td:eq(2)').html('女');
}else{
$(row).find('td:eq(2)').html('男');
}
$(row)\[0\].className\="text-c";
// console.log($(row));
}
});
});
/\*用户-添加\*/
function member\_add(title,url,w,h){
layer\_show(title,url,w,h);
}
/\*用户-查看\*/
function member\_show(title,url,id,w,h){
layer\_show(title,url,w,h);
}
/\*用户-停用\*/
function member\_stop(obj,id){
layer.confirm('确认要停用吗?',function(index){
$.ajax({
type: 'POST',
url: "{{url('admin/users')}}"+'/'+id,
data:{status:0},
dataType: 'json',
headers: {
'X-CSRF-TOKEN' : '{{ csrf\_token() }}'
},
success: function(data){
layer.msg('已停用!',{icon: 6,time:1000});
var status\='已停用';
$(obj).parent().html(status);
// location.reload();
},
error:function(data) {
console.log(data.msg);
},
});
});
}
/\*用户-启用\*/
function member\_start(obj,id){
layer.confirm('确认要启用吗?',function(index){
$.ajax({
type: 'POST',
url: "{{url('admin/users/')}}"+'/'+id,
data:{status:1},
dataType: 'json',
headers: {
'X-CSRF-TOKEN' : '{{ csrf\_token() }}'
},
success: function(data){
layer.msg('已启用!',{icon: 6,time:1000});
var status \='已启用';
$(obj).parent().html(status);
// location.reload();
},
error:function(data) {
console.log(data.msg);
},
});
});
}
/\*用户-编辑\*/
function member\_edit(title,url,id,w,h){
layer\_show(title,url,w,h);
}
/\*密码-修改\*/
function change\_password(title,url,id,w,h){
layer\_show(title,url,w,h);
}
/\*用户-删除\*/
function member\_del(obj,id){
layer.confirm('确认要删除吗?',function(index){
$.ajax({
type: 'POST',
url: "{{url('admin/users/delete')}}"+'/'+id,
dataType: 'json',
headers: {
'X-CSRF-TOKEN' : '{{ csrf\_token() }}'
},
success: function(data){
$(obj).parents("tr").remove();
layer.msg('已删除!',{icon:1,time:1000});
},
error:function(data) {
console.log(data.msg);
},
});
});
}
$('#btns').bind('click',function(){
$('.table-sort').dataTable().fnDraw(false);
});
@endsection
```
#### 2管理员controller
```
<?php
namespace App\\Http\\Controllers\\Admin;
use Illuminate\\Http\\Request;
use App\\Http\\Controllers\\Controller;
use App\\Models\\Users;
class UsersController extends Controller
{
/\*\*
\*
\* @param Request $request
\* @return void
\* @Description管理员列表
\* @example
\* @author liu
\* @since
\*/
public function index(Request $request){
if($request\->isMethod('post')){
//B. 排序
$n \= $request \-> input('order.0.column');//获得排序字段的序号
$duan \= $request \-> input('columns.'.$n.'.data');//获得排序的字段
$xu \= $request \-> input('order.0.dir'); //排序的顺序asc/desc
//数据分页
$offset\=$request\->input('start');//开始
$len\=$request\->input('length');//长度偏移量
$where\=array();
$datemin\=$request\->input('datemin')?$request\->input('datemin'):date("Y-m-d");
$datemax\=$request\->input('datemax')?$request\->input('datemax'):date("Y-m-d");
$datemin\=$datemin." 00:00:00";
$datemax\=$datemax." 23:59:59";
if($request\->input('keyword')){
$keyword\=$request\->input('keyword');
$where\[\]=\['name','like',"%$keyword%"\];
}
//获取管理员记录总条数
$cnt \=Users::where($where)
\->whereBetween('created\_at',\[$datemin,$datemax\])
\->count();
$shuju\=Users::offset($offset)
\->orderBy($duan,$xu)
\->where($where)
\->whereBetween('created\_at',\[$datemin,$datemax\])
\->limit($len)
\->get();
$info\=\[
'draw'\=>$request\->get('draw'),
'recordsTotal'\=>$cnt,
'recordsFiltered'\=>$cnt,
'data'\=>$shuju,
\];
return $info;
}else{
$datemin\=date('Y-m-d');
$datemax\=date('Y-m-d');
return view('admin.users.index',compact('datemin','datemax'));
}
}
/\*\*
\* Undocumented function
\*
\* @param Request $request
\* @return void
\* @Description添加管理员
\* @example
\* @author liu
\* @since
\*/
public function add(Request $request){
if($request\->isMethod('post')){
$rules\=\[
'name'\=>'required',
'password'\=>'required',
'phone'\=>'required',
'email'\=>'required',
'sex'\=>'required',
'role\_id'\=>'required',
\];
$notices \= \[
'name.required'\=>'姓名必须填写',
'password.required'\=>'密码必须填写',
'phone.required'\=>'手机号必须填写',
'email.required'\=>'邮箱必须填写',
'sex.required'\=>'性别必须选择',
'role\_id.required'\=>'角色必须选择',
\];
//收集数据
$from\_data\=$request\->all();
$validator\=\\Validator::make($from\_data,$rules,$notices);
if($validator\->passes()){//验证通过
//储存数据
Users::create([
'name'=>$from_data['name'],
'password'=>bcrypt($from_data['password']),
'phone'=>$from_data['phone'],
'sex'=>$from_data['sex'],
'email'=>$from_data['email'],
'role_id'=>$from_data['role_id'],
]);
return ['success'=>true];
}else{
$errorinfo=collect($validator->messages())->implode('0','|');
return ['success'=>false,'errorinfo'=>$errorinfo\];
}
}else{
return view('admin.users.add');
}
}
public function setStatus(Request $request,Users $users){
$users->status\=$request\->input('status');
$users\->update();
return \['success'\=>'设置成功!'\];
}
public function editUsers(Request $request,Users $users){
if($request->isMethod('post')){
$rules=[
'name'=>'required',
'password'=>'required',
'phone'=>'required',
'email'=>'required',
'sex'=>'required',
'role_id'=>'required',
];
$notices = [
'name.required'=>'姓名必须填写',
'password.required'=>'密码必须填写',
'phone.required'=>'手机号必须填写',
'email.required'=>'邮箱必须填写',
'sex.required'=>'性别必须选择',
'role_id.required'=>'角色必须选择',
];
//收集数据
$from_data=$request->all();
$validator=\Validator::make($from_data,$rules,$notices);
if($validator->passes()){//验证通过
//储存数据
$users->update([
'name'=>$from_data['name'],
'password'=>bcrypt($from_data['password']),
'phone'=>$from_data['phone'],
'sex'=>$from_data['sex'],
'email'=>$from_data['email'],
'role_id'=>$from_data['role_id'],
]);
return ['success'=>true];
}else{
$errorinfo=collect($validator->messages())->implode('0','|');
return ['success'=>false,'errorinfo'=>$errorinfo];
}
}else{
return view('admin.users.edit',compact('users'));
}
}
public function delete(Request $request,Users $users){
if($request->isMethod('post')){
$result=$users->delete();
if($result){
return ['success'=>true];
}else{
return ['success'=>false];
}
}
}
}
```
- 面试
- php
- laravel
- 安装
- 创建数据
- 创建控制器
- 错误
- 权限认证
- 图形验证码
- 管理员
- 无限分类
- 视频播放
- 推流
- pc页面
- thinkphp5
- 表单提交安全验证
- crontab
- 获取下级所有数据
- 过滤敏感词
- 二维码
- 邀请码
- jwt token
- 笛卡尔
- 高并发解决优化
- 设置多语言
- 计算经纬度两点距离
- 分片上传
- centos swoole
- 查看swoole版本
- centos 安装 redis
- 把整数随机分成n份或者红包
- 生成随机字符串
- 获取上级
- 宝塔搭建nginx推拉流
- 生成二维码海报
- 二维数组去重
- 经纬度 ---边距 和判断是不是范围内
- workerman
- 扩展
- redis
- mysql
- mysql 主从复制
- 定位问题语句
- 列的选择规则
- Enum介绍
- 索引介绍
- 延迟关联
- in 查询陷阱
- limit 优化
- 事务
- 读写分离
- mysql 权限错误
- mysql计算距离
- mysql数据导出导入
- 索引失效
- mysql 语句技巧
- linux
- 配置nginx 高可用
- Nginx内核参数优化
- 配置优化
- nginx-keepalived实现高可用负载
- lvs+keepalived
- centos5关闭防火墙
- nginx操作
- linux操作
- mysql 安装
- php
- 安装phpadmin
- php7安装mongodb
- 查看php位置
- 查找开启的进程端口
- 守护进程
- centos安装php7.2
- centos 错误解决
- 安装php7错误
- mysql 错误
- 支付宝支付
- html
- js 倒计时
- go vscode 配置
- go util
- 获取两个数之间随机数
- java
- lambda
- 随机抽取
- lombok
- springboot
- 常见注解
- 接受参数常用注解
- 文件上传
- 上传错误日志拦截
- 拦截器
- 定时任务
- mybatis
- 关联查询
- 全局配置
- 缓存
- git
- 微信相关
- 体现到零钱
- 服务商转账
- 公众号小程序相关
- 小程序二维码
- svn
- layui