簡單使用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:Windows\System32\driversetc\hosts

在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= "Encore\Admin\AdminServiceProvider"

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  Illuminate\Support\Facades\Schema;
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  Illuminate\Database\Eloquent\Model;
 
class  Article  extends  Model
{
     protected  $table  'Article' ;
}

繼續修改laravel-admin目錄下app/Admin/Controllers/ArticleController.php文件

將所有寫着YourModel的地方修改為Article

別忘了需要在文件頂部引入文章模型,引入代碼:

1
use  App\Article;

此時后台左側導航的文章管理已經能正常打開不會報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  App\Http\Controllers\Controller;
use  Encore\Admin\Controllers\Has\Resource\Actions;
use  Encore\Admin\Form;
use  Encore\Admin\Grid;
use  Encore\Admin\Layout\Content;
use  Encore\Admin\Show;
use  App\Article;
 
class  ArticleController  extends  Controller
{
     use  Has\Resource\Actions;
 
     /**
      * 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>');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM