pensive

一、创建文章 Article 模型、迁移文件、控制器,验证器

1,创建模型同时创建迁移文件

php artisan make:model Models/Admin/Article -m

如图示

2,创建 Article 控制器,验证器的命令行命令分别是

php artisan make:controller Admin/ArticleController

php artisan make:request ArticleRequest

如图示

3,复制 User 控制器 App\Http\Controllers\Admin\CateController.php 上所有的方法到 App\Http\Controllers\Admin\ArticleController.php 上并把上面的 Cate和 admin.cate替换为 Article  admin.articleArticleController.php 编辑后的代码如下

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Http\Requests\ArticleRequest;
use Illuminate\Http\Request;

class ArticleController extends Controller
{
    //文章
    public function index(){
        $data = Article::paginate(5);//获取文章表数据并分页,每页展示 5 条记录
        return view(\'admin.article.index\',compact(\'data\'));//compact()是分配数据

    }
    public function add(){
        return view(\'admin.article.add\');
    }
    public function addSave(ArticleRequest $request){//Request $request 依赖注入
        //dd($request->all());   //打印接收到的数据
        $Article = Article::create($request->all()); //Article模型create对象往数据表添加数据
        if($Article->id){
            return redirect()->route(\'admin.article.index\')->with(\'success-msg\',\'添加文章成功!\');
        }else{
            return redirect()->route(\'admin.article.index\')->with(\'danger-msg\',\'添加文章失败!\');
        }

    }
    public function edit(int $id){//$id是接收到的ID
        $Article = Article::find($id);//通过ID在数据库查找对应文章信息
        return view(\'admin.article.edit\',compact(\'Article\')); //compact(\'Article\')是分配数据到模板

    }
    public function editSave(ArticleRequest $request,int $id){
        //方法一,更新数据update()
        // $update = Article::find($id)->update($request->all());
        //dd($update);
        //方法二,保存数据save()
        $Article = Article::find($id);
        $Article -> Article_name = $request->input(\'Article_name\');
        $Article -> keywords = $request->input(\'keywords\');
        $Article -> description = $request->input(\'description\');
        if($Article->save()){
            return redirect()->route(\'admin.article.index\')->with(\'success-msg\',\'修改文章成功!\');
        }else{
            return redirect()->back()->with(\'danger-msg\',\'修改文章失败!\');
        }
    }
    public function delete(Request $request,int $id){
        $del = Article::destroy($id);
        if($del){
            return redirect()->back()->with(\'success-msg\',\'删除文章成功!\');
        }else{
            return redirect()->back()->with(\'danger-msg\',\'删除文章失败!\');
        }

    }
}
View Code

4,在 \resources\views\Admin\Article下新建 Article 的3个模板文件 index.blade.php, edit.blade.php , add.blade.php。并复制  \resources\views\Admin\Cate下的3个模板的内容 来替换。

5,修改  \resources\views\Admin\Article\index.blade.php 模板,暂时删除 <tbody> </tbody>标签之间的内容,分页调用代码 {{$data -> links()}} 也暂时删除 。

6,编辑 \routes\web.php 路由, 新增  Article文章列表 的路由 ,直接加在后台 路由分组 内,栏目列表路由 后面 如下

//文章列表
    Route::get(\'articles\',"articleController@index")->name("admin.article.index");
    //文章添加界面
    Route::get(\'article/add\',"articleController@add")->name("admin.article.add");
    //文章添加处理
    Route::post(\'article/add\',"articleController@addSave")->name("admin.article.add");
    //文章修改界面
    Route::get(\'article/edit/{id}\',"articleController@edit")->name("admin.article.edit")->where([\'id\'=>\'\d+\']);
    //文章修改处理
    Route::post(\'article/edit/{id}\',"articleController@editSave")->name("admin.article.edit")->where([\'id\'=>\'\d+\']);
    //文章删除
    Route::get(\'article/delete/{id}\',"articleController@delete")->name("admin.article.delete")->where([\'id\'=>\'\d+\']);

7,\resources\views\Admin\Layout\main.blade.php 编辑公共模板main.blade.php 新增如下代码 在左侧导航栏的<ul></ul>中

 <li>
                    <a href="#" class="menu-dropdown">
                        <i class="menu-icon fa fa-pencil-square-o"></i>

                        <span class="menu-text">文章管理</span>

                        <i class="menu-expand"></i>
                    </a>
                    <ul class="submenu">
                        <li>
                            <a href="{{route(\'admin.article.index\')}}">
                                <span class="menu-text">文章列表</span>
                                <i class="menu-expand"></i>
                            </a>
                        </li>
                        <li>
                            <a href="{{route(\'admin.article.add\')}}">
                                <span class="menu-text">文章添加</span>
                                <i class="menu-expand"></i>
                            </a>
                        </li>

                    </ul>
                </li>

效果如下

 

8,文章数据表 字段

a,编辑 article 的迁移文件 \database\migrations\2020_05_19_082838_create_articles_table.php  的up()方法 改成如下

public function up()
    {
        Schema::create(\'articles\', function (Blueprint $table) {
            $table->bigIncrements(\'id\');
            $table->string(\'title\',200)->default(\'\')->comment(\'标题\');
            $table->string(\'pic\',200)->default(\'\')->comment(\'缩略图\');
            $table->string(\'keywords\',255)->default(\'\')->comment(\'关键词\');
            $table->string(\'description\',500)->default()->comment(\'描述\');
            $table->bigInteger(\'cate_id\')->default(0)->comment(\'所属分类\');
            $table->text(\'content\')->comment(\'内容 \');
            $table->bigInteger(\'click\')->default(0)->comment(\'点击量\');
            $table->timestamps();
            $table->softDeletes();
        });
    }

b,编辑 \app\Models\Admin\Article.php 如下

<?php

namespace App\Models\Admin;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Article extends Model
{
    use SoftDeletes;
    protected $dates = [\'delete_at\'];
    protected $guarded = []; //把不能往数据表添加的字段设为空,如:@crsf 创建的token隐藏字段
}

c,命令行 执行,重新生成所有表,并多了 Articles 表

php artisan migrate:refresh --seed

如下图示

 

 3,App\Http\Controllers\Admin\ArticleController.php  修改方法 add() 

public function add(){
        $cateRes = Cate::all();
        return view(\'admin.article.add\',compact(\'cateRes\'));
    }

4,\resources\views\Admin\Article\add.blade.php 模板文件编辑 为:

@extends(\'Admin.Layout.main\')
@section(\'content\')
    <!-- Page Breadcrumb -->
    <div class="page-breadcrumbs">
        <ul class="breadcrumb">
            <li>
                <a href="#">系统</a>
            </li>
            <li>
                <a href="#">文章管理</a>
            </li>
            <li class="active">添文章</li>
        </ul>
    </div>
    <!-- /Page Breadcrumb -->
    <!-- Page Body -->
    <div class="page-body">
        @include(\'Admin.Layout.msg\')
        <div class="row">
            <div class="col-lg-12 col-sm-12 col-xs-12">
                <div class="widget">
                    <div class="widget-header bordered-bottom bordered-blue">
                        <span class="widget-caption">新增文章</span>
                    </div>
                    <div class="widget-body">
                        <div id="horizontal-form">
                            <form class="form-horizontal" role="form" action="{{route(\'admin.article.add\')}}" method="post">
                                @csrf
                                <div class="form-group">
                                    <label for="username" class="col-sm-2 control-label no-padding-right">标题</label>
                                    <div class="col-sm-6">
                                        <input class="form-control" id="cate_name" placeholder="" name="cate_name" required="" type="text">
                                    </div>
                                    <p class="help-block col-sm-4 red">* 必填</p>
                                </div>
                                <div class="form-group">
                                    <label for="username" class="col-sm-2 control-label no-padding-right">关键词</label>
                                    <div class="col-sm-6">
                                        <input class="form-control" id="keywords" placeholder="" name="keywords" required="" type="text">
                                    </div>

                                </div>
                                <div class="form-group">
                                    <label for="username" class="col-sm-2 control-label no-padding-right">描述</label>
                                    <div class="col-sm-6">
                                       <textarea class="form-control" id="description" name="description" ></textarea>

                                    </div>

                                </div>
                                <div class="form-group">
                                    <label for="username" class="col-sm-2 control-label no-padding-right">所属分类</label>
                                    <div class="col-sm-6">
                                        <select name="cate_id">
                                            <option value="0">选择分类</option>
                                            @foreach($cateRes as $cate)
                                                <option value="{{$cate->id}}">{{$cate->cate_name}}</option>
                                            @endforeach

                                        </select>

                                    </div>

                                </div>
                                <div class="form-group">
                                    <label for="username" class="col-sm-2 control-label no-padding-right">内容</label>
                                    <div class="col-sm-6">
                                        <textarea class="form-control" id="content" name="content" required="" ></textarea>

                                    </div>

                                </div>

                                <div class="form-group">
                                    <div class="col-sm-offset-2 col-sm-10">
                                        <button type="submit" class="btn btn-default">保存信息</button>
                                    </div>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>

    </div>
    <!-- /Page Body -->
@endsection
View Code

5,浏览器访问 http://laravel.pensive.top/admin/article/add 效果如下

END

 

分类:

技术点:

相关文章:

  • 2021-08-14
  • 2022-12-23
  • 2022-12-23
  • 2022-01-08
  • 2021-09-27
  • 2021-04-04
  • 2021-05-15
猜你喜欢
  • 2021-10-13
  • 2022-12-23
  • 2022-12-23
  • 2021-08-15
  • 2022-01-18
  • 2022-01-01
相关资源
相似解决方案