zoukankan      html  css  js  c++  java
  • 简单使用Laravel-admin构建一个功能强大的后台管理

    Laravel-admin可以快速构建一个功能强大的后台,方便快速开发。

    以下内容记录简单使用Laravel-admin,以及遇到小错误的解决方法。

    Laravel-admin 依赖以下环境 需要提前装好(安装的Laravel-admin版本为1.5)

    1
    2
    3
    Apache+PHP+MYSQL (这个不作解释... 注意需要PHP 7+ 推荐使用phpstudy集成环境)
    Laravel (5.5+)
    Composer

    以上环境如PHP/Composer需要设置好系统环境变量

    先使用Composer命令安装Laravel ,命令如下(用cmd或者Git先进入到想要安装的目录)

    1
    composer create-project --prefer-dist laravel/laravel Laravel-admin 5.7.*

    1.png

    如果觉得安装速度慢,可以改一下镜像地址 参考:https://pkg.phpcomposer.com/

    安装完成即显示:

    2.png

    然后在安装时指定的目录会有一个Laravel-admin文件夹 此时需要设置一下Apache 网站目录设置为Laravel-admin下的public

    使用的是phpstudy集成环境,所以在phpstudy中点击[其他选项菜单]=>[站点域名管理] 设置内容:

    3.png

    接下来需要设置一下系统hosts,使用集成环境phpstudy可以在[其他选项菜单]=>[打开host]

    也可以手动打开该文件,该文件路径为:

    1
    C:WindowsSystem32driversetchosts

    在hosts文件最底下添加一行代码:

    1
    127.0.0.1   www.laravel-admin.test

    4.png

    保存好文件,打开浏览器输入www.laravel-admin.test即可看到Laravel页面:

    5.png

    如果不能显示这个界面,请检查是否漏掉了上面某个步骤。

    接下来需要设置Laravel的数据库

    先使用浏览器打开localhost/phpmyadmin/ 此数据库管理系统是phpstudy自带了

    使用账号/密码root登录进去

    新建一个数据库:

    6.png

    数据库建好后,打开Laravel-admin目录,修改该目录下的.env文件,修改配置数据库参数:

    7.png

    接下来就是安装Laravel-admin,打开Git或者cmd指定到Laravel-admin目录下,然后输入以下代码(也可打开Laravel-admin官方 参考官方文档安装):

    1
    composer require encore/laravel-admin

    8.png

    完成后:

    9.png

    使用命令发布资源:

    1
    php artisan vendor:publish --provider="EncoreAdminAdminServiceProvider"

    10.png

    最后使用命令完成安装

    1
    php artisan admin:install

    如果出现错误:

    1
    2
    3
    4
    5
    1   DoctrineDBALDriverPDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Spec
    ified key was too long; max key length is 1000 bytes")
           
      2   PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too lon
    g; max key length is 1000 bytes")

    11.png

    解决方法:

    修改laravel-admin/app/Providers目录下的AppServiceProvider.php文件:

    代码:

    1
    2
    use IlluminateSupportFacadesSchema;
    Schema::defaultStringLength(191);

    12.png

    再进入数据库管理系统 localhost/phpmyadmin/ 将laravel_admin数据库里面的表全删除

    13.png

    再执行命令:

    1
    php artisan admin:install

    如果没有遇到错误,则无需修改文件也无需执行命令。

    14.png

    至此,Laravel-admin已经安装完成

    可以在浏览器打开:www.laravel-admin.test/admin 访问进入后台。账号及密码为:admin

    假如数据库中有一个文章表,如何使用Laravel-admin管理文章?

    接下来简单使用Laravel-admin管理文章。

    先在laravel_admin数据库建立一个文章表 表取名为:Article,

    需要的字段有:

    id(设置为主键并自增),

    title(文章标题,VARCHAT类型长度32),

    content(文章内容,TEXT类型),

    updated_at(修改时间,TIMESTAMP类型),

    created_at(创建时间,TIMESTAMP类型)

    15.png

    16.png

    --此处犯了个错误,表名不该使用大写开头,应该使用全小写(开发规范) 大家引以为戒。

    此时打开后台,会发现都是英文,需要修改配置文件(laravel-admin目录下)config/app.php:

    找到代码:

    1
    'locale' => 'en',

    修改为:

    1
    'locale' => 'zh-CN',

    此时打开后台依然会发现左侧导航存在英文

    点击左侧导航中的[Admin]=>[Menu],即可修改导航为中文(需要一个一个修改左侧导航)。

    17.png

    回到重点,需要创建一个菜单,为文章管理

    18.png

    此时刷新页面,会发现左侧导航有一个【文章管理】,如果点击【文章管理】会发现报404错误,这是因为没有设置路由。

    打开文件(laravel-admin目录下)app/Admin/routes.php

    添加一句代码:

    1
    $router->resource('/article', ArticleController::class);

    19.png

    进入laravel-admin目录下app/Admin/Controllers

    复制控制器文件ExampleController.php为ArticleController.php

    修改类名:

    1
    class ExampleController extends Controller

    将类名修改为ArticleController

    如:

    1
    class ArticleController extends Controller

    创建文章表模型,在cmd或者Git使用命令:

    1
    php artisan make:model Article

    此时会生成一个名为Article.php的文件并存放于laravel-admin目录下app目录中。

    需要为此文件的Article类中添加代码:

    1
    protected $table 'Article';

    添加后Article.php文件的代码如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    namespace App;
     
    use IlluminateDatabaseEloquentModel;
     
    class Article extends Model
    {
        protected $table 'Article';
    }

    继续修改laravel-admin目录下app/Admin/Controllers/ArticleController.php文件

    将所有写着YourModel的地方修改为Article

    别忘了需要在文件顶部引入文章模型,引入代码:

    1
    use AppArticle;

    此时后台左侧导航的文章管理已经能正常打开不会报404错误

    为了这个界面好看点,在app/Admin/Controllers/ArticleController.php文件的grid函数修改如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    protected function grid()
    {
        $grid new Grid(new Article);
     
        $grid->id('ID')->sortable();
        $grid->title('文章标题');
        $grid->created_at('创建时间');
        $grid->updated_at('修改时间');
     
        return $grid;
    }

    此时刷新界面再点击右上角【新建】

    需要修改form函数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    protected function form()
    {
        $form new Form(new Article);
     
        $form->text('title','文章标题');
        $form->textarea('content','文章内容');
     
        $form->display('id''文章ID');
        $form->display('created_at''创建时间');
        $form->display('updated_at''修改时间');
     
        return $form;
    }

    此时再刷新页面,发现有了一些组件,可以正常写文章并提交保存到数据库。

    返回到文章管理的页面,点击右侧【操作】中的“眼睛”按钮查看文章详情,发现并没有文章详情,这是因为需要修改detail函数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    protected function detail($id)
    {
        $show new Show(Article::findOrFail($id));
     
        $show->id('文章ID');
        $show->title('文章标题');
        $show->content('文章内容');
        $show->created_at('创建时间');
        $show->updated_at('修改时间');
     
        return $show;
    }

    laravel-admin目录下app/Admin/Controllers/ArticleController.php控制器全部代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    <?php
     
    namespace AppAdminControllers;
     
    use AppHttpControllersController;
    use EncoreAdminControllersHasResourceActions;
    use EncoreAdminForm;
    use EncoreAdminGrid;
    use EncoreAdminLayoutContent;
    use EncoreAdminShow;
    use AppArticle;
     
    class ArticleController extends Controller
    {
        use HasResourceActions;
     
        /**
         * Index interface.
         *
         * @param Content $content
         * @return Content
         */
        public function index(Content $content)
        {
            return $content
                ->header('Index')
                ->description('description')
                ->body($this->grid());
        }
     
        /**
         * Show interface.
         *
         * @param mixed   $id
         * @param Content $content
         * @return Content
         */
        public function show($id, Content $content)
        {
            return $content
                ->header('Detail')
                ->description('description')
                ->body($this->detail($id));
        }
     
        /**
         * Edit interface.
         *
         * @param mixed   $id
         * @param Content $content
         * @return Content
         */
        public function edit($id, Content $content)
        {
            return $content
                ->header('Edit')
                ->description('description')
                ->body($this->form()->edit($id));
        }
     
        /**
         * Create interface.
         *
         * @param Content $content
         * @return Content
         */
        public function create(Content $content)
        {
            return $content
                ->header('Create')
                ->description('description')
                ->body($this->form());
        }
     
        /**
         * Make a grid builder.
         *
         * @return Grid
         */
        protected function grid()
        {
            $grid new Grid(new Article);
     
            $grid->id('ID')->sortable();
            $grid->title('文章标题');
            $grid->created_at('创建时间');
            $grid->updated_at('修改时间');
     
            return $grid;
        }
     
        /**
         * Make a show builder.
         *
         * @param mixed   $id
         * @return Show
         */
        protected function detail($id)
        {
            $show new Show(Article::findOrFail($id));
     
            $show->id('文章ID');
            $show->title('文章标题');
            $show->content('文章内容');
            $show->created_at('创建时间');
            $show->updated_at('修改时间');
     
            return $show;
        }
     
        /**
         * Make a form builder.
         *
         * @return Form
         */
        protected function form()
        {
            $form new Form(new Article);
     
            $form->text('title','文章标题');
            $form->textarea('content','文章内容');
     
            $form->display('id''文章ID');
            $form->display('created_at''创建时间');
            $form->display('updated_at''修改时间');
     
            return $form;
        }
    }

    至此,文章管理中的CRUD(增删查改)均实现。

    但仔细看,后台中的新建文章的文章内容使用的是textarea而不是富文本编辑器。

    官方文档有详细使用富文本编辑器的教程:https://laravel-admin.org/docs/zh/model-form-field-management

    后续如果有需要再写富文本编辑器的文章吧。

    20.png

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------

     $('.sidebar-toggle').after('<div class="navbar-header"> <!-- Sidebar toggle button--> <a href="javascript:void(0);" class="sidebar-toggle" data-toggle="offcanvas" role="button"> <span class="sr-only">Toggle navigation</span> </a> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#header-navbar-collapse"> <i class="fa fa-bars"></i> </button> </div>').remove();$('nav>ul.navbar-nav').first().removeClass('hidden-sm visible-lg-block').wrap('<div class="collapse navbar-collapse pull-left" id="header-navbar-collapse"></div>');
  • 相关阅读:
    powerdesigner与数据库之间的连接
    D9-Android自定义控件之动画篇1-ObjectAnimator
    01-React搭建react环境及SCSS的配置
    开源计划之--Android绘图库--LogicCanvas
    5-VVI-材料设计之ToolBar
    4-VVI-材料设计之沉浸标题栏和TextInputLayout
    D8-Android自定义控件之DotNum及item复用问题
    O3-开源框架使用之Butterknife 8.8.1及源码浅析
    TIII-Android技术篇之反射
    TVI-Android技术篇之注解Annotation
  • 原文地址:https://www.cnblogs.com/yehuisir/p/11384161.html
Copyright © 2011-2022 走看看