项目整理

引入验证码类和$_SESSION处理方法

(使用第三方$-SESSION时需在人口文件打开原生session 即在index.php 中加入session_start();

点击验证码时换一张:

<img  src="{{url('admin/code')}}"

alt=""  οnclick="this.src='{{url('admin/code')}}?'+Math.random()"

>)

登录表单提交CSRF认证及验证码判断

(在表单提交时需在表单页面设置csrf认证,即加一个_token字段{{csrf_field}};

验证码判断:

if($input = Input::all()){

            $code = new \Code;

            $_code = $code->get();

            if(strtoupper($input['code'])!=$_code){

                return back()->with('msg','验证码错误!');

            }

  在login.blade.php中加入

@if(session('msg'))

               <p style="color:red">{{session('msg')}}</p>

               @endif

用来显示错误信息

)

后台登陆密码Crypt加密和解密

(创建表和 与之对应的模型;

进行判断:

$user = User::first();

 if($user->user_name != $input['user_name'] || Crypt::decrypt($user->user_pass)!= $input['user_pass']){

  return back()->with('msg','用户名或者密码错误!');

            }

            session(['user'=>$user]);

            return redirect('admin/index');

 

获取系统基本信息:

 

更改时区:在配置文件config/app.php中’timezone’=>’PRC’,//八东区

创建子视图:

 

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="utf-8">

   <link rel="stylesheet" href="{{asset('resources/views/admin/style/css/ch-ui.admin.css')}}">

    <link rel="stylesheet" href="{{asset('resources/views/admin/style/font/css/font-awesome.min.css')}}">

    <script type="text/javascript" src="{{asset('resources/views/admin/style/js/jquery.js')}}"></script>

    <script type="text/javascript" src="{{asset('resources/views/admin/style/js/ch-ui.admin.js')}}"></script>

    <script type="text/javascript" src="{{asset('resources/org/layer/layer.js')}}"></script>

</head>

<body>

@yield('content')

</body>

</html>

 

使用子视图:

@extends('layouts.admin')

@section('content')

//此处为编辑的内容

@endsection

 

后台管理员登录中间件设置和注销登录

(此处中间件是用来判断登陆的用户是否是管理员  在Kernel.php中注册中间件。

配置中间件

public function handle($request, Closure $next)

    {

        if(!session('user')){

            return redirect('admin/login');

        }

        return $next($request);

注销登录

public function quit()//注销登录

    {

        session(['user'=>null]);

        return redirect('admin/login');

}

在路由中设置前缀和命名空间

Route::group(['middleware' => ['web','admin.login'],'prefix'=>'admin','namespace'=>'Admin'], function () { }

 

后台管理员修改密码及validation验证

//更改超级管理员密码

    public function pass()

    {

        if($input = Input::all()){

            $rules = [

                'password'=>'required|between:6,20|confirmed',

            ];

            $message = [

                'password.required'=>'新密码不能为空!',

                'password.between'=>'新密码必须在6-20位之间!',

                'password.confirmed'=>'新密码和确认密码不一致!',

            ];

            $validator = Validator::make($input,$rules,$message);

            if($validator->passes()){

                $user = User::first();

                $_password = Crypt::decrypt($user->user_pass);

                if($input['password_o']==$_password){

                    $user->user_pass = Crypt::encrypt($input['password']);

                    $user->update();

                    return back()->with('errors','密码修改成功!');

                }else{

                    return back()->with('errors','原密码错误!');

                }

            }else{

                return back()->withErrors($validator);

            }

        }else{

            return view('admin.pass');

        }

}

 

 

界面显示错误信息

@if(count($errors)>0)

            <div class="mark">

                @if(is_object($errors))

                    @foreach($errors->all() as $error)

                        <p>{{$error}}</p>

                    @endforeach

                @else

                    <p>{{$errors}}</p>

                @endif

            </div>

 @endif

创建数据库文章分类表

后台文章分类列表模板导入及基本信息展示(

用一条路由控制一堆操作时应使用资源路由

Route::resource('category', 'CategoryController');

查看路由列表命令:php artisan route:list

在控制器中写如下方法:

//get.admin/category  全部分类列表

    public function index()

    {

//        $categorys = Category::tree();

        $categorys = (new Category)->tree();

        return view('admin.category.index')->with('data',$categorys);//返回视图,传递参数

}

 

在category/index.blade.php页面中进行循环输出

@foreach($data as $v)

<tr>

<td class="tc">

<input type="text" οnchange="changeOrder(this,{{$v->cate_id}})" value="{{$v->cate_order}}">

</td>

<td class="tc">{{$v->cate_id}}</td>

<td>

<a href="#">{{$v->_cate_name}}</a>

</td>

<td>{{$v->cate_title}}</td>

<td>{{$v->cate_view}}</td>

<td>

<a href="{{url('admin/category/'.$v->cate_id.'/edit')}}">修改</a>

<a href="javascript:;" οnclick="delCate({{$v->cate_id}})">删除</a>

</td>

</tr>

@endforeach

后台文章分类页多级分类列表

主标题下是副标题的实现办法:

控制器

public function index()

    {

//        $categorys = Category::tree();

        $categorys = (new Category)->tree();

        return view('admin.category.index')->with('data',$categorys);

}

模型

public function tree()

    {

        $categorys = $this->orderBy('cate_order','asc')->get();

        return $this->getTree($categorys,'cate_name','cate_id','cate_pid');

    }

 

//    public static function tree()

//    {

//        $categorys = Category::all();

//        return (new Category)->getTree($categorys,'cate_name','cate_id','cate_pid');

//    }

 

    public function getTree($data,$field_name,$field_id='id',$field_pid='pid',$pid=0)

    {

        $arr = array();

        foreach ($data as $k=>$v){

            if($v->$field_pid==$pid){

                $data[$k]["_".$field_name] = $data[$k][$field_name];

                $arr[] = $data[$k];

                foreach ($data as $m=>$n){

                    if($n->$field_pid == $v->$field_id){

                        $data[$m]["_".$field_name] = '├─ '.$data[$m][$field_name];

                        $arr[] = $data[$m];

                    }

                }

            }

        }

        return $arr;

}

视图

@foreach($data as $v)

<tr>

<td class="tc">

<input type="text" οnchange="changeOrder(this,{{$v->cate_id}})" value="{{$v->cate_order}}">

</td>

<td class="tc">{{$v->cate_id}}</td>

<td>

<a href="#">{{$v->_cate_name}}</a>

</td>

<td>{{$v->cate_title}}</td>

<td>{{$v->cate_view}}</td>

<td>

<a href="{{url('admin/category/'.$v->cate_id.'/edit')}}">修改</a>

<a href="javascript:;" οnclick="delCate({{$v->cate_id}})">删除</a>

</td>

</tr>

@endforeach

 

后台文章分类页Ajax异步修改分类排序

$.post方式实现异步请求

$.post{‘url’,{参数},{回调函数}}

在input表单内加入如下动作

 

 

<td class="tc">

<input type="text" οnchange="changeOrder(this,{{$v->cate_id}})" value="{{$v->cate_order}}">

</td>

编写一条<script>函数

 

function changeOrder(obj,cate_id){

        var cate_order = $(obj).val();

        $.post("{{url('admin/cate/changeorder')}}",{'_token':'{{csrf_token()}}','cate_id':cate_id,'cate_order':cate_order},function(data){

            if(data.status == 0){

                layer.msg(data.msg, {icon: 6});

            }else{

                layer.msg(data.msg, {icon: 5});

            }

        });

}

配置路由并编写一条控制器,如下所示

public function changeOrder()

    {

        $input = Input::all();

        $cate = Category::find($input['cate_id']);

        $cate->cate_order = $input['cate_order'];

        $re = $cate->update();

        if($re){

            $data = [

                'status' => 0,

                'msg' => '分类排序更新成功!',

            ];

        }else{

            $data = [

                'status' => 1,

                'msg' => '分类排序更新失败,请稍后重试!',

            ];

        }

        return $data;

}

引入弹层库,给用户更好的体验(larer.layui.com)

下载文件后放至resource/org目录下,引入js文件至主文件目录

在要显示的地方加入layer.msg(data.msg, {icon: 6})即可;

在Category.php中加入

$categorys = $this->orderBy('cate_order','asc')->get();实现排序

后台文章分类添加模板分配及父级分类嵌入

引入添加分类的模板

写添加分类的控制方法

  public function create()

    {

        $data = Category::where('cate_pid',0)->get();

        return view('admin/category/add',compact('data'));

}

 

修改引入的模板

<form action="{{url('admin/category')}}" method="post">

{{csrf_field()}}

<table class="add_tab">

<tbody>

<tr>

<th width="120"><i class="require">*</i>父级分类:</th>

<td>

<select name="cate_pid">

<option value="0">==顶级分类==</option>

@foreach($data as $d)

  <option value="{{$d->cate_id}}">{{$d->cate_name}}</option>

@endforeach

</select>

</td>

</tr>

</tbody>

</table>

</form>

后台文章分类添加数据validation验证及入库

在添加数据之前首先对填入的数据进行验证

编写验证控制器方法验证分类名称不能为空

    public function store()

    {

        $input = Input::except('_token');//除了_token属性外其余方法均返回

        $rules = [

            'cate_name'=>'required',

        ];

        $message = [

            'cate_name.required'=>'分类名称不能为空!',

        ];

        $validator = Validator::make($input,$rules,$message);

        if($validator->passes()){

            $re = Category::create($input);

            if($re){

                return redirect('admin/category');

            }else{

                return back()->with('errors','数据填充失败,请稍后重试!');

            }

        }else{

            return back()->withErrors($validator);

        }

}

 

模板页添加如下信息用于显示错误提示消息

@if(count($errors)>0)

            <div class="mark">

                @if(is_object($errors))

                    @foreach($errors->all() as $error)

                        <p>{{$error}}</p>

                    @endforeach

                @else

                    <p>{{$errors}}</p>

                @endif

            </div>

        @endif

使用create()方法填充数据须在模型中声明

protected $guarded=[‘a’,‘b’….];或protected $fillable=[‘a’,‘b’….];

 

转载于:https://my.oschina.net/u/3304754/blog/863233

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值