溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Laravel admin后臺管理插件

發(fā)布時間:2021-11-06 11:47:14 來源:億速云 閱讀:198 作者:iii 欄目:web開發(fā)

本篇內(nèi)容主要講解“怎么使用Laravel admin后臺管理插件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么使用Laravel admin后臺管理插件”吧!

  創(chuàng)建 Laravel 項目

  laravel-admin是一個基于laravel的后臺管理開發(fā)框架,能幫助你使用很少的時間和代碼量開發(fā)出功能完備的管理后臺,另外它作為一個三方包,可以和框架內(nèi)其它項目并行開發(fā),真正做到前后臺開發(fā)分離。

  我們根據(jù)官方文檔走,創(chuàng)建一個 Laravel 項目還是很簡單的:

  // 使用 Composer 下載 Laravel 安裝程序

  composer global require "laravel/installer"

  // 創(chuàng)建 web 項目

  laravel new web

  具體配置數(shù)據(jù)庫等:略

  安裝 laravel-admin

  laravel-admin 是一個可以快速幫你構(gòu)建后臺管理的工具,它提供的頁面組件和表單元素等功能,能幫助你使用很少的代碼就實現(xiàn)功能完善的后臺管理功能。

  注:當前版本(1.5)需要安裝 PHP 7+和 Laravel 5.5

  看看 laravel-admin 的特性:

  內(nèi)置用戶和權限系統(tǒng)

  model-grid 支持快速構(gòu)建數(shù)據(jù)表格

  model-form 支持快速構(gòu)建數(shù)據(jù)表單

  model-tree 支持快速構(gòu)建樹狀數(shù)據(jù)

  內(nèi)置 40+ 種 form 元素組件、以及支持擴展組件

  支持 Laravel 的多種模型關系

  mysql、mongodb、pgsql 等多數(shù)據(jù)庫支持

  支持引入第三方前端庫

  數(shù)據(jù)庫和 artisan 命令行工具的 web 實現(xiàn)

  支持自定義圖表

  多種常用 web 組件

  支持本地和 oss 文件上傳

  有了這些功能,開發(fā)一個后臺管理系統(tǒng)就變得相對簡單了。

  安裝插件:

  composer require encore/laravel-admin "1.5.*"

  // 發(fā)布資源:

  php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"

  // 安裝

  php artisan admin:install

  簡單的三條命令,即可配置好一個簡單的后臺管理系統(tǒng),賬號和密碼都是 admin

  代碼主要集中在\APP\Admin中

  默認系統(tǒng)提供了一個 Dashboard 界面:

  namespace App\Admin\Controllers;

  use App\Http\Controllers\Controller;

  use Encore\Admin\Facades\Admin;

  use Encore\Admin\Layout\Column;

  use Encore\Admin\Layout\Content;

  use Encore\Admin\Layout\Row;

  class HomeController extends Controller

  {

  public function index()

  {

  return Admin::content(function (Content $content) {

  $content->header('Test Dashboard');

  $content->description('Description...');

  $content->row(Dashboard::title());

  $content->row(function (Row $row) {

  $row->column(4, function (Column $column) {

  $column->append(Dashboard::environment());

  });

  $row->column(4, function (Column $column) {

  $column->append(Dashboard::extensions());

  });

  $row->column(4, function (Column $column) {

  $column->append(Dashboard::dependencies());

  });

  });

  });

  }

  }

  結(jié)合界面和代碼,可以看出界面主要分成這么幾個部分:header、description、兩個 row,后一個 row 包含三個 column 模塊;具體的代碼放在 Dashboard 代碼中,如下:

  namespace Encore\Admin\Controllers;

  use Encore\Admin\Admin;

  class Dashboard

  {

  /**

  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View

  */

  public static function title()

  {

  return view('admin::dashboard.title');

  }

  /**

  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View

  */

  public static function environment()

  {

  $envs = [

  ['name' => 'PHP version', 'value' => 'PHP/'.PHP_VERSION],

  ['name' => 'Laravel version', 'value' => app()->version()],

  ['name' => 'CGI', 'value' => php_sapi_name()],

  ['name' => 'Uname', 'value' => php_uname()],

  ['name' => 'Server', 'value' => array_get($_SERVER, 'SERVER_SOFTWARE')],

  ['name' => 'Cache driver', 'value' => config('cache.default')],

  ['name' => 'Session driver', 'value' => config('session.driver')],

  ['name' => 'Queue driver', 'value' => config('queue.default')],

  ['name' => 'Timezone', 'value' => config('app.timezone')],

  ['name' => 'Locale', 'value' => config('app.locale')],

  ['name' => 'Env', 'value' => config('app.env')],

  ['name' => 'URL', 'value' => config('app.url')],

  ];

  return view('admin::dashboard.environment', compact('envs'));

  }

  /**

  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View

  */

  public static function extensions()

  {

  $extensions = [

  'helpers' => [

  'name' => 'laravel-admin-ext/helpers',

  'link' => 'https://github.com/laravel-admin-extensions/helpers',

  'icon' => 'gears',

  ],

  'log-viewer' => [

  'name' => 'laravel-admin-ext/log-viewer',

  'link' => 'https://github.com/laravel-admin-extensions/log-viewer',

  'icon' => 'database',

  ],

  'backup' => [

  'name' => 'laravel-admin-ext/backup',

  'link' => 'https://github.com/laravel-admin-extensions/backup',

  'icon' => 'copy',

  ],

  'config' => [

  'name' => 'laravel-admin-ext/config',

  'link' => 'https://github.com/laravel-admin-extensions/config',

  'icon' => 'toggle-on',

  ],

  'api-tester' => [

  'name' => 'laravel-admin-ext/api-tester',

  'link' => 'https://github.com/laravel-admin-extensions/api-tester',

  'icon' => 'sliders',

  ],

  'media-manager' => [

  'name' => 'laravel-admin-ext/media-manager',

  'link' => 'https://github.com/laravel-admin-extensions/media-manager',

  'icon' => 'file',

  ],

  'scheduling' => [

  'name' => 'laravel-admin-ext/scheduling',

  'link' => 'https://github.com/laravel-admin-extensions/scheduling',

  'icon' => 'clock-o',

  ],

  'reporter' => [

  'name' => 'laravel-admin-ext/reporter',

  'link' => 'https://github.com/laravel-admin-extensions/reporter',

  'icon' => 'bug',

  ],

  'translation' => [

  'name' => 'laravel-admin-ext/translation',

  'link' => 'https://github.com/laravel-admin-extensions/translation',

  'icon' => 'language',

  ],

  ];

  foreach ($extensions as &$extension) {

  $name = explode('/', $extension['name']);

  $extension['installed'] = array_key_exists(end($name), Admin::$extensions);

  }

  return view('admin::dashboard.extensions', compact('extensions'));

  }

  /**

  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View

  */

  public static function dependencies()

  {

  $json = file_get_contents(base_path('composer.json'));

  $dependencies = json_decode($json, true)['require'];

  return view('admin::dashboard.dependencies', compact('dependencies'));

  }

  }

  這樣我們就把代碼分塊的組織在一起。具體布局類看:class Content implements Renderable

  其它的靜態(tài)資源文件放在 /public/vendor/laravel-admin 目錄下

  禁用創(chuàng)建按鈕

  $grid->disableCreateButton();

  禁用分頁條

  $grid->disablePagination();

  禁用查詢過濾器

  $grid->disableFilter();

  禁用導出數(shù)據(jù)按鈕

  $grid->disableExport();

  禁用行操作列

  $grid->disableActions();

  設置分頁選擇器選項

  $grid->perPages([10, 20, 30, 40, 50]);

  model-grid默認有兩個行操作編輯和刪除,可以通過下面的方式關閉它們:

  $grid->actions(function ($actions) {

  // 隱藏刪除按鈕

  $actions->disableDelete();

  // 隱藏修改按鈕

  $actions->disableEdit();

  });

  如果有自定義的操作按鈕,可以通過下面的方式添加:

  $grid->actions(function ($actions) {

  // append一個操作

  $actions->append('');

  // prepend一個操作

  $actions->prepend('');

  });

  獲取主鍵信息或者獲取當前行的數(shù)組

  $grid->actions(function ($actions) {

  // 當前行的數(shù)據(jù)數(shù)組

  $row = $actions->row;

  // 獲取當前行主鍵值

  $id = $actions->getKey();

  });

  復制代碼目前默認實現(xiàn)了批量刪除操作的功能,如果要關掉批量刪除操作:

  $grid->tools(function ($tools) {

  $tools->batch(function ($batch) {

  $batch->disableDelete();

  });

  });

  查詢過濾Filter:如下

  $grid->filter(function ($query) {

  // 去掉默認的id過濾器

  $query->disableIdFilter();

  $query->like('title', '文章標題');

  $query->equal('cate_id', '所屬分類')->select(

  ArticleCategories::pluck('name', 'id')

  );

  });

  form的一些小技巧 :

  $form->text('from', '文章來源')->rules('required') //可以加rules驗證規(guī)則

  $form->image('thumb', '文章縮略圖')->uniqueName()

  ->move('upload/article/' . date("Ymd"))

  ->options(['overwriteInitial' => true]);//代表新圖片替換修圖片

  ->uniqueName() //為隨機名稱

  //保存前回調(diào)

  $form->saving(function (Form $form) {

  });

  //保存后回調(diào)

  $form->saved(function (Form $form) {

  });

  設置表單提交的action

  $form->setAction('admin/users');

  獲取URL中的id

  $shopId = request()->route()->parameter('shop');

  當為添加操作時,店鋪名稱不可和數(shù)據(jù)庫內(nèi)其他數(shù)據(jù)重復

  當為修改操作時,店鋪名稱除自己外不可和數(shù)據(jù)庫內(nèi)其他數(shù)據(jù)重復

  if ($shopId) {無錫人流醫(yī)院哪家好 http://www.bhnnkyy120.com/

  $form->text('shop_name', '店鋪名稱')

  ->rules("required|unique:shops,shop_name,{$shopId},id");

  } else {

  $form->text('shop_name', '店鋪名稱')

  ->rules("required|unique:shops");

  }

  進入grid表格時,默認id倒序

  $grid->model()->orderBy('id', 'desc');

  多圖片上傳

  昨天有個朋友在開發(fā)一個功能的時候,因為需要用到多圖上傳,問我Laravel_admin怎么做多圖片上傳,所以我也是查看文檔,但是官方文檔基本沒談到,最后還是在外網(wǎng)上找到,今天向大家分享有關使用小技巧。

  我們可以在表單中這樣引用多圖上傳,代碼如下:

  $form->multipleImage('images', '圖冊')->help('請上傳圖片格式')->removable();

  但是我們用到removeable()方法需要注意在form表單中不能使用MessageBag方法。

  然后在數(shù)據(jù)模型中,我們必須這樣定義兩個方法,代碼如下:

  public function getLogoAttribute($value)

  {

  return explode(',', $value);

  }

  public function setLogoAttribute($value)

  {

  $this->attributes['images'] = implode(',', $value);

  }

  完成以上操作,我們便成功的配置完多圖上傳。

到此,相信大家對“怎么使用Laravel admin后臺管理插件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI