laravel增删改查

1.model层
2.控制层(含图片处理,内容验证)
3.插入信息的页面
4.信息列表页面
5.信息编辑页面
6.在提交页面传递提示信息

补充 ajax删除

  <a href="{{url('admin/article/'.$v->art_id.'/edit')}}">修改</a>
  <a href="javascript:;" onclick="delArt({{$v->art_id}})">删除</a>
    <script>
        //删除分类
        function delArt(art_id) {
            layer.confirm('您确定要删除这篇文章吗?', {
                btn: ['确定','取消'] //按钮
            }, function(){
                $.post("{{url('admin/article/')}}/"+art_id,{'_method':'delete','_token':"{{csrf_token()}}"},function (msg) {
                    if(msg == 0){
                        layer.msg('删除失败', {icon: 5});
                        setTimeout("location.reload()",1000);
                        //window.location.reload();
                    }else {
                        layer.msg('删除成功', {icon: 1});
                        setTimeout("location.reload()",1000);
                        //window.location.reload();
                    }
                });
            }, function(){

            });
        }
    </script>

1.model层

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Carousel extends Model
{
    protected $table = 'anchong_carousel_figure';
    protected $primaryKey = 'figure_id';
    protected $guarded = [''];
    public $timestamps = false;
//    添加内容
    public function add($data)
    {
        $this->fill($data);
        if ($this->save()){
            return true;
        }else{
            return false;
        }
    }

    /*
     * 编辑信息
     */
    public function carouselupdate($id,$data)
    {
        $num = $this->find($id);
        if ($num->update($data)){
            return true;
        }else{
            return false;
        }
    }

    /*
     * 删除轮播图
     */
    public function del($id)
    {
        return $this->where('figure_id',$id)->delete();
    }

}
?>

2.控制层

<?php
namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Validator,DB;
use Illuminate\Support\Facades\Input;

//轮播图的处理类
class CarouselController extends ConmonController
{
    public $carousel;
    public function __construct()
    {
        $this->carousel = new \App\Carousel();
    }

//    展示轮播图内容
    public function index()
    {
        // 轮播图
        $datas = DB::table('anchong_carousel_figure')->orderBy('figure_id','desc')->paginate(5);
        return view('admin.carousel.index',compact('datas'));
    }
//    创建轮播图
    public function create()
    {
        return view('admin.carousel.create');
    }

//    编辑图片内容,跳转到编辑页面
    public function edit($id)
    {
        $datas = $this->carousel->find($id);
        return view('admin.carousel.edit',compact('datas'));
    }

    //    接受更新的数据,更新数据
    public function update($id)
    {
        $data = Input::all();
        $res = $this->carousel->carouselupdate($id,$data);
        if($res){
            return redirect('carousel')->with('message', '更新成功'); //要在模板上用session('message')取值
        }else{
            return back()->with('errors','更新失败');
        }
    }

    //删除某条信息
    public function destroy($id)
    {
        $res = $this->carousel->del($id);
        if ($res){
            return response()->json(['status' => 0, 'msg' => '删除成功']);
        }else{
            return response()->json(['status' => 1, 'msg' => '删除失败,请重试']);
        }
    }

//    保存轮播图信息
//    保存内容
    public function store(\Request $request )
    {

        $input = Input::except('_token','picfile');
        $res = $this->uploadpic('picfile','uploads/images');
        switch ($res){
            case 1: return back()->with('errors','图片上传失败');
            case 2: return back()->with('errors','图片不合法');
            case 3: return back()->with('errors','图片储存失败');
            default :
                $input['figure_img'] = $res; //把得到的地址给picname存到数据库
                if($this->carousel->add($input)){
                    return redirect('carousel')->with('message', '发布成功'); //这个message是存在session里面的,在模板中药通过session取值
                }else{
                    return back()->with('errors','数据填充失败')->withInput();;
                }
        }
    }
}


// 被继承的commonController控制器里面的图片上传处理
class ConmonController extends Controller
{
//    上传图片
    public function uploadpic( $filename, $filepath)
    {
        //        1.首先检查文件是否存在
        if (\Request::hasFile($filename)){
            //          2.获取文件
            $file = \Request::file($filename);
            //          3.其次检查图片手否合法
            if ($file->isValid()){
                //          4.将文件取一个新的名字
                $newName = 'partner'.time().rand(100000, 999999).$file->getClientOriginalName();
                //           5.移动文件,并修改名字
                if($file->move($filepath,$newName)){
                    return $filepath.'/'.$newName;   //返回一个地址
                }else{
                    return 3;
                }
            }else{
                return 2;
            }
        }else{
            return 1;
        }
    }
    // $realPath = $file->getRealPath(); //这个表示的是缓存在tmp文件夹下的文件的绝对路径;
    // $tmpName = $file -> getFileName();   //缓存在tmp文件中的文件名
    // $clientName = $file -> getClientOriginalName(); //获取文件名称
    //$extension = $file->getClientOriginalExtension();   //上传文件的后缀
}



// 如果需要做验证判断
public function leaveStore()
{
    $input = Input::all();
    $rules = [
        'phone'=>'required',
        'content'=>'required',
    ];
    $message = [
        'phone.required'=>'电话号码必须填写!',
        'content.required'=>'反馈信息必须填写!',
    ];
    $validator = Validator::make($input,$rules,$message);
    if ($validator->fails()){
        return back()->withErrors($validator)->withInput();
    }
    $result = $this->leave->add($input);
    if ($result){
        return back()->with('message','留言成功');//这个值是存在session中的
    }else{
        return back()->with('errors','留言失败')->withInput(); //返回错误信息在模板中读出,并将用户填写的信息用withInput();返回
    }

}

3.插入信息的页面

@extends('admin.admin')
@section('content')
<ul class="breadcrumb">
    <li><a href="{{url('admin/console')}}">首页</a></li>
    <li>轮播图</li>
    <li>轮播图添加</li>
</ul>
<div class="box">
    <div class="box-header with-border">
        <h3 class="box-title">轮播图添加</h3>
    </div>
    <div class="box-body">
    // 1。如果插入信息失败,就这样处理,如果错误是一个变量。就遍历,是一个单量,就直接输出
        @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
                @endif
                <form class="form-horizontal" action="{{ url('carousel/')}}" method="POST" enctype="multipart/form-data">
                    {{ csrf_field() }}
                    <div class="form-group">
                        <label class="col-sm-2 control-label" >图片标题</label>
                        <div class="col-sm-10">
                            <input type="text" name="figure_title" class="form-control" value="{{ old('figure_title') }}"   placeholder="图片标题" >
                        </div>
                    </div>
                    <div class="form-group">
                        <label  class="col-sm-2 control-label">图片内容</label>
                        <div class="col-sm-10">
                            <input type="text" name="content" class="form-control" value="{{ old('content') }}"  placeholder="图片内容">
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="inputPassword3" class="col-sm-2 control-label">选择文件</label>
                        <div class="col-sm-10">
                            <input type="file" name="picfile" >
                        </div>
                    </div>
                    <div class="form-group row">
                        <div class="col-md-4 col-md-offset-2">
                            <input class="btn btn-primary"  type="submit" value="提交">
                        </div>
                    </div>

                </form>
            </div>

    </div>
@endsection

4.信息列表页面

@extends('admin.admin')
@section('content')
    <script src="layer/layer.js"></script>
//这个session是插入信息成功,重定向加with(message')里面的信息
@if (session('message'))
    <div class="alert alert-success">
        {{ session('message') }}
    </div>
@endif
    <div class="box">
        <div class="box-header with-border">
            <h3 class="box-title">轮播图列表</h3>
        </div><!-- /.box-header -->
        <div class="box-body">
            <table class="table table-hover">
                <tr>
                    <th>ID</th>
                    <th>图片标题    </th>
                    <th>图片内容    </th>
                    <th>图片</th>
                    <th>编辑</th>
                </tr>
                @foreach($datas as $data)
                    <tr>
                        <td>{{$data->figure_id }}</td>
                        <td>{{ $data->figure_title }}</td>
                        <td>{{ $data->content }}</td>
                        // 1.读图片的时候,前面要加上"/",从根部开始读取
                        <td><img src="/{{$data->figure_img}}" alt="" style="width: 100;height: 100px;"></td>
                        <td>
                            <a href="{{ url('carousel/'.$data->figure_id.'/edit')  }}" class="btn btn-info btn-primary btn-sm iframe cboxElement"><span class="glyphicon glyphicon-pencil"></span> 编辑</a>
                            <a  class="btn btn-info btn-danger btn-sm iframe cboxElement" href="javascript:;" onclick="delCate({{$data->figure_id}})"><span class="glyphicon glyphicon-trash"></span> 删除</a>
                        </td>
                    </tr>
                @endforeach
            </table>
        </div><!-- /.box-body -->
        <div class="box-footer clearfix">
            <div class="pull-left">
            // 2.信息成分页,注意变量是$datas,$links
                {{ $datas->links() }}
            </div>
        </div>
    </div><!-- /.box -->
    <script>
        //删除分类
        function delCate(id) {
            layer.confirm('你确定删除吗?', {
                btn: ['确定','取消'] //按钮
            }, function(){
                $.post("{{ url('carousel') }}/"+id,{'_method':'delete' ,'_token':'{{csrf_token()}}'},function (data) {
                    if(data.status==0){
                        location.href = location.href;
                        layer.msg(data.msg,{icon:6});
                    }else{
                        layer.msg(data.msg, {icon:6});
                    }
                } );

            }, function(){

            });
        }
    </script>
@endsection

5.信息编辑页面

@extends('admin.admin')
@section('content')
    <ul class="breadcrumb">
        <li><a href="{{url('admin/admin')}}">首页</a></li>
        <li>内容管理</li>
        <li>图片编辑</li>
    </ul>
    <div class="box">
        <div class="box-header with-border">
            <h3 class="box-title">图片编辑</h3>
        </div>
        <div class="box-body">
            <form class="form-horizontal" action="{{ url('carousel/'.$datas->figure_id )}}" method="POST">
                <input type="hidden" name="_method" value="PUT">
                {{ csrf_field() }}
                <div class="form-group">
                    <label class="col-sm-2 control-label" >图片标题</label>
                    <div class="col-sm-10">
                        <input type="text" name="figure_title" class="form-control" value="{{ $datas->figure_title }}"  placeholder="图片标题">
                    </div>
                </div>
                <div class="form-group">
                    <label  class="col-sm-2 control-label">图片内容</label>
                    <div class="col-sm-10">
                        <input type="text" name="content" class="form-control" value="{{ $datas->content }}" placeholder="图片内容">
                    </div>
                </div>
                <div class="form-group row">
                    <div class="col-md-4 col-md-offset-2">
                        <input class="btn btn-primary"  type="submit" value="提交">
                    </div>
                </div>

            </form>
        </div>

    </div>
@endsection

6.在提交页面传递成功与否的信息

    //这是在一个被继承的主页面里面写的
    <section class="content">
  @if(is_object($errors))
      @if (count($errors) > 0)
          <div class="alert alert-danger alert-dismissable">
              <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
              <p><i class="icon fa fa-ban"></i>  填写表单出错了哦!</p>
              <ul>
                  @foreach ($errors->all() as $error)
                      <li>{{ $error }}</li>
                  @endforeach
              </ul>
          </div>
      @endif
  @else
      <div class="alert alert-danger alert-dismissable">
          <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
          <p><i class="icon fa fa-ban"></i>  出错了哦!</p>
          <ul>
              <li>{{ $errors }}</li>
          </ul>
      </div>
  @endif

  @if(Session::has('message'))
      <div class="alert alert-success alert-dismissable">
          <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
          <p><i class="icon fa fa-check"></i>  {{Session::get('message')}}</p>

      </div>
  @endif
  @yield('content')
  </section>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,509评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,093评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,632评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,848评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,855评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,353评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,738评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,706评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,240评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,268评论 3 345
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,398评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,012评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,709评论 3 337
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,178评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,312评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,932评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,464评论 2 365

推荐阅读更多精彩内容

  • 用户Model创建 Laravel-增删改查 1、数据添加 路由/app/http/routes.php /app...
    曹渊说创业阅读 2,262评论 0 1
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,418评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,741评论 18 139
  • 梳云鬟, 旧容妆, 娉娉婷婷秀色餐, 冰脂颜, 无浊念, 倾国倾城难比肩, 灼灼心, 金不换, 自由徜徉天地间, ...
    苏沐晴阅读 373评论 12 13
  • 中午刚上班,走进楼道看见晓梅端着一碗红糖水,边走边用勺子搅动着,时不时用嘴吹一下,我停了下来,晓梅放快脚步走了过来...
    方海敏阅读 742评论 11 28