项目整理2

数据库文章表的创建及添加文章模板导入

创建文章表

 

创建一个资源路由和与之对应的控制器(类似于分类管理),导入模板

   

后台文章添加及百度编辑器Ueditor嵌入

控制器

public function create()
{
    $data = (new Category)->tree();
    return view('admin.article.add',compact('data'));
}

 

在add.blade.php中引入分类级别

<tr>
    <th width="120">分类:</th>
    <td>
        <select name="cate_id">
            @foreach($data as $d)
            <option value="{{$d->cate_id}}">{{$d->_cate_name}}</option>
            @endforeach
        </select>
    </td>
</tr>

 

百度编辑器Ueditor嵌入

将下载好的ueditor放至resources/org目录下,并在文章内容处引入ueditor的<script>并做相应的修改

 

 

<tr>
    <th>文章内容:</th>
    <td>
    <script type="text/javascript" charset="utf-8" src="{{asset('resources/org/ueditor/ueditor.config.js')}}"></script>
        <script type="text/javascript" charset="utf-8"     src="{{asset('resources/org/ueditor/ueditor.all.min.js')}}"> </script>
        <script type="text/javascript" charset="utf-8" src="{{asset('resources/org/ueditor/lang/zh-cn/zh-cn.js')}}"></script>
        <script id="editor" name="art_content" type="text/plain" style="width:600px;height:300px;"></script>
        <script type="text/javascript">
            var ue = UE.getEditor('editor');
        </script>
        <style>
            .edui-default{line-height: 28px;}
            div.edui-combox-body,div.edui-button-body,div.edui-splitbutton-body
            {overflow: hidden; height:20px;}
            div.edui-box{overflow: hidden; height:22px;}
        </style>
    </td>
</tr>

后台文章添加缩略图之uploadify插件引入(www.uploadify.com

将下载好的ueditor放至resources/org目录下

将与之对应的<script>引入到add.blade.php中

 

<tr>
                <th>缩略图:</th>
                <td>
                    <input type="text" size="50" name="art_thumb">
                    <input id="file_upload" name="file_upload" type="file" multiple="true">
                    <script src="{{asset('resources/org/uploadify/jquery.uploadify.min.js')}}" type="text/javascript"></script>
                    <link rel="stylesheet" type="text/css" href="{{asset('resources/org/uploadify/uploadify.css')}}">
                    <script type="text/javascript">
                        <?php $timestamp = time();?>
                        $(function() {
                            $('#file_upload').uploadify({
                                'buttonText' : '图片上传',
                                'formData'     : {
                                    'timestamp' : '<?php echo $timestamp;?>',
                                    '_token'     : "{{csrf_token()}}"
                                },
                                'swf'      : "{{asset('resources/org/uploadify/uploadify.swf')}}",
                                'uploader' : "{{url('admin/upload')}}",
                                'onUploadSuccess' : function(file, data, response) {
                                    $('input[name=art_thumb]').val(data);
                                    $('#art_thumb_img').attr('src','/'+data);
//                                    alert(data);
                                }
                            });
                        });
                    </script>
                    <style>
                        .uploadify{display:inline-block;}
                        .uploadify-button{border:none; border-radius:5px; margin-top:8px;}
                        table.add_tab tr td span.uploadify-button-text{color: #FFF; margin:0;}
                    </style>
                </td>
            </tr>

 

后台文章添加缩略图之文件存储

//图片上传

Commoncontroller.php中做如下配置
public function upload()
{
    $file = Input::file('Filedata');
    if($file -> isValid()){
        $entension = $file -> getClientOriginalExtension(); //上传文件的后缀.
        $newName = date('YmdHis').mt_rand(100,999).'.'.$entension;//重命名
        $path = $file -> move(base_path().'/uploads',$newName);//存储路径,新文件名
        $filepath = 'uploads/'.$newName;
        return $filepath;
    }
}

 

add.blade.phpp配置

显示文件路径及缩略图

'onUploadSuccess' : function(file, data, response) {
    $('input[name=art_thumb]').val(data);//在文本框内显示文件路径
    $('#art_thumb_img').attr('src','/'+data);//抓取缩略图所在位置

 

 

<td>
    <img src="" alt="" id="art_thumb_img" style="max-width: 350px; max-height:100px;">

//显示缩略图
</td>

 

 

 

后台文章添加数据及validation验证

 

//post.admin/article  添加文章提交
public function store()
{
    $input = Input::except('_token');
    $input['art_time'] = time();
    $rules = [
        'art_title'=>'required',
        'art_content'=>'required',
    ];
    $message = [
        'art_title.required'=>'文章名称不能为空!',
        'art_content.required'=>'文章内容不能为空!',
    ];
    $validator = Validator::make($input,$rules,$message);
    if($validator->passes()){
        $re = Article::create($input);
        if($re){
            return redirect('admin/article');
        }else{
            return back()->with('errors','数据填充失败,请稍后重试!');
        }
    }else{
        return back()->withErrors($validator);
    }
}

 

 

后台文章列表展示及分页功能实现

取数据,排序,分页

public function index()
{
    $data = Article::orderBy('art_id','desc')->paginate(10); //取数据,排序,分页
    return view('admin.article.index',compact('data'));
}

 

循环读取数据

@foreach($data as $v)
<tr>
    <td class="tc">{{$v->art_id}}</td>
    <td>
        <a href="#">{{$v->art_title}}</a>
    </td>
    <td>{{$v->art_view}}</td>
    <td>{{$v->art_editor}}</td>
    <td>{{date('Y-m-d',$v->art_time)}}</td>
    <td>
        <a href="{{url('admin/article/'.$v->art_id.'/edit')}}">修改</a>
        <a href="javascript:;" οnclick="delArt({{$v->art_id}})">删除</a>
    </td>
</tr>
@endforeach

 

显示分页信息

<div class="page_list">
    {{$data->links()}}
</div>

 

后台文章编辑

 

在修改按钮处添加:<a href="{{url('admin/article/'.$v->art_id.'/edit')}}">修改</a>

 

编辑文章控制器

//get.admin/article/{article}/edit  编辑文章
public function edit($art_id)
{
    $data = (new Category)->tree();
    $field = Article::find($art_id);
    return view('admin.article.edit',compact('data','field'));
}

 

循环读取当前文章所属目录

@foreach($data as $d)
<option value="{{$d->cate_id}}"
        @if($field->cate_id==$d->cate_id) selected @endif
>{{$d->_cate_name}}</option>
@endforeach

 

 

 

更新文章

//put.admin/article/{article}    更新文章
public function update($art_id)
{
    $input = Input::except('_token','_method');
    $re = Article::where('art_id',$art_id)->update($input);
    if($re){
        return redirect('admin/article');
    }else{
        return back()->with('errors','文章更新失败,请稍后重试!');
    }
}

 

后台文章删除

在删除按钮处添加:<a href="javascript:;" οnclick="delArt({{$v->art_id}})">删除</a>

 

在当前页面添加<script>函数

<script>
    //删除文章
    function delArt(art_id) {
        layer.confirm('您确定要删除这篇文章吗?', {
            btn: ['确定','取消'] //按钮
        }, function(){

 $.post("{{url('admin/article/')}}/"+art_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: 5});
                }
            });
        }, function(){
        });
    }
</script>

编写删除单个文章的控制器方法

//delete.admin/article/{article}   删除单个文章


public function destroy($art_id)
{
    $re = Article::where('art_id',$art_id)->delete();
    if($re){
        $data = [
            'status' => 0,
            'msg' => '文章删除成功!',
        ];
    }else{
        $data = [
            'status' => 1,
            'msg' => '文章删除失败,请稍后重试!',
        ];
    }
    return $data;
}

 

友情链接模块使用Migrations数据库迁移创建数据表

 

 

php artisan make:migration create_link_table

在database/migration下可查看,打开并编辑

public function up()
{
    Schema::create('links', function (Blueprint $table) {
        $table->engine = 'MyISAM';
        $table->increments('link_id');
        $table->string('link_name')->default('')->comment('//名称');
        $table->string('link_title')->default('')->comment('//标题');
        $table->string('link_url')->default('')->comment('//链接');
        $table->integer('link_order')->default(0)->comment('//排序');
    });
}

 

创建数据表生成文件命令: php artisan migrate

 

友情链接模块使用seeding填充测试数据

打开文件写入以下内容

public function run()
{
    $data = [
        [
            'link_name' => '测试填充数据 ',
            'link_title' => '测试填充数据',
            'link_url' => '测试填充数据',
            'link_order' =>测试填充数据,
        ],
        [
            'link_name' => '测试填充数据',
            'link_title' => '测试填充数据',
            'link_url' => '测试填充数据',
            'link_order' =>测试填充数据,
        ]
    ];
    DB::table('links')->insert($data);
}

 

修改DatabaseSeeder.php文件里的

public function run()

    {

        $this->call(LinksTableSeeder::class);

}

 

 

执行填充文件:php artisan db:seed

 

友情链接模块列表页展示及Ajax异步修改排序

创建资源模型,路由和对应的控制器

返回一个视图并修改视图模板

<td class="tc">

 <input type="text" οnchange="changeOrder(this,{{$v->link_id}})" value="{{$v->link_order}}">
</td>

 

修改changeOrder函数

 

function changeOrder(obj,link_id){
    var link_order = $(obj).val();
    $.post("{{url('admin/links/changeorder')}}",{'_token':'{{csrf_token()}}','link_id':link_id,'link_order':link_order},function(data){
        if(data.status == 0){
            layer.msg(data.msg, {icon: 6});
        }else{
            layer.msg(data.msg, {icon: 5});
        }
    });
}

 

创建changeorder路由和与之对应的控制器方法

Route::post('navs/changeorder', 'NavsController@changeOrder');

 

 

 

 

编辑与之对应的控制器方法

public function changeOrder()
{
    $input = Input::all();
    $navs = Navs::find($input['nav_id']);
    $navs->nav_order = $input['nav_order'];
    $re = $navs->update();
    if($re){
        $data = [
            'status' => 0,
            'msg' => '自定义导航排序更新成功!',
        ];
    }else{
        $data = [
            'status' => 1,
            'msg' => '自定义导航排序更新失败,请稍后重试!',
        ];
    }
    return $data;
}

 

 

 

友情链接模块之友情链接添加

<a href="{{url('admin/links/create')}}"><i class="fa fa-plus"></i>添加链接</a>

//get.admin/links/create   添加友情链接

    public function create()

    {

        return view('admin/links/add');

}

 

编辑提交及验证方法

//post.admin/links  添加友情链接提交
public function store()
{
    $input = Input::except('_token');
    $rules = [
        'link_name'=>'required',
        'link_url'=>'required',
    ];
    $message = [
        'link_name.required'=>'友情链接名称不能为空!',
        'link_url.required'=>'友情链接URL不能为空!',
    ];

    $validator = Validator::make($input,$rules,$message);
    if($validator->passes()){
        $re = Links::create($input);
        if($re){
            return redirect('admin/links');
        }else{
            return back()->with('errors','友情链接失败,请稍后重试!');
        }
    }else{
        return back()->withErrors($validator);
    }
}

 

友情链接之友情链接修改及删除

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

 

编辑控制方法

//get.admin/links/{links}/edit  编辑友情链接

    public function edit($link_id)

    {

        $field = Links::find($link_id);

        return view('admin.links.edit',compact('field'));

}

 

//put.admin/links/{links}    更新友情链接
public function update($link_id)
{
    $input = Input::except('_token','_method');
    $re = Links::where('link_id',$link_id)->update($input);
    if($re){
        return redirect('admin/links');
    }else{
        return back()->with('errors','友情链接更新失败,请稍后重试!');
    }
}

 

修改模板页面部分代码

<form action="{{url('admin/links/'.$field->link_id)}}" method="post">

        {{method_field('PUT')}}

        {{csrf_field()}}

</form>

 

 

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

 

 

编辑delLinks函数

function delLinks(link_id) {

layer.confirm('您确定要删除这个链接吗?', { btn: ['确定','取消'] //按钮 }, function(){

            $.post("{{url('admin/links/')}}/"+link_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: 5});

                }

            });

        }, function(){

        });

    }

 

删除的控制方法

//delete.admin/links/{links}   删除友情链接
public function destroy($link_id)
{
    $re = Links::where('link_id',$link_id)->delete();
    if($re){
        $data = [
            'status' => 0,
            'msg' => '友情链接删除成功!',
        ];
    }else{
        $data = [
            'status' => 1,
            'msg' => '友情链接删除失败,请稍后重试!',
        ];
    }
    return $data;
}

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值