您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么使用Laravel admin后臺管理插件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么使用Laravel admin后臺管理插件”吧!
創建 Laravel 項目
laravel-admin是一個基于laravel的后臺管理開發框架,能幫助你使用很少的時間和代碼量開發出功能完備的管理后臺,另外它作為一個三方包,可以和框架內其它項目并行開發,真正做到前后臺開發分離。
我們根據官方文檔走,創建一個 Laravel 項目還是很簡單的:
// 使用 Composer 下載 Laravel 安裝程序
composer global require "laravel/installer"
// 創建 web 項目
laravel new web
具體配置數據庫等:略
安裝 laravel-admin
laravel-admin 是一個可以快速幫你構建后臺管理的工具,它提供的頁面組件和表單元素等功能,能幫助你使用很少的代碼就實現功能完善的后臺管理功能。
注:當前版本(1.5)需要安裝 PHP 7+和 Laravel 5.5
看看 laravel-admin 的特性:
內置用戶和權限系統
model-grid 支持快速構建數據表格
model-form 支持快速構建數據表單
model-tree 支持快速構建樹狀數據
內置 40+ 種 form 元素組件、以及支持擴展組件
支持 Laravel 的多種模型關系
支持引入第三方前端庫
數據庫和 artisan 命令行工具的 web 實現
支持自定義圖表
多種常用 web 組件
支持本地和 oss 文件上傳
有了這些功能,開發一個后臺管理系統就變得相對簡單了。
安裝插件:
composer require encore/laravel-admin "1.5.*"
// 發布資源:
php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
// 安裝
php artisan admin:install
簡單的三條命令,即可配置好一個簡單的后臺管理系統,賬號和密碼都是 admin
代碼主要集中在\APP\Admin中
默認系統提供了一個 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());
});
});
});
}
}
結合界面和代碼,可以看出界面主要分成這么幾個部分: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
其它的靜態資源文件放在 /public/vendor/laravel-admin 目錄下
禁用創建按鈕
$grid->disableCreateButton();
禁用分頁條
$grid->disablePagination();
禁用查詢過濾器
$grid->disableFilter();
禁用導出數據按鈕
$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('');
});
獲取主鍵信息或者獲取當前行的數組
$grid->actions(function ($actions) {
// 當前行的數據數組
$row = $actions->row;
// 獲取當前行主鍵值
$id = $actions->getKey();
});
復制代碼目前默認實現了批量刪除操作的功能,如果要關掉批量刪除操作:
$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驗證規則
$form->image('thumb', '文章縮略圖')->uniqueName()
->move('upload/article/' . date("Ymd"))
->options(['overwriteInitial' => true]);//代表新圖片替換修圖片
->uniqueName() //為隨機名稱
//保存前回調
$form->saving(function (Form $form) {
});
//保存后回調
$form->saved(function (Form $form) {
});
設置表單提交的action
$form->setAction('admin/users');
獲取URL中的id
$shopId = request()->route()->parameter('shop');
當為添加操作時,店鋪名稱不可和數據庫內其他數據重復
當為修改操作時,店鋪名稱除自己外不可和數據庫內其他數據重復
if ($shopId) {無錫人流醫院哪家好 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');
多圖片上傳
昨天有個朋友在開發一個功能的時候,因為需要用到多圖上傳,問我Laravel_admin怎么做多圖片上傳,所以我也是查看文檔,但是官方文檔基本沒談到,最后還是在外網上找到,今天向大家分享有關使用小技巧。
我們可以在表單中這樣引用多圖上傳,代碼如下:
$form->multipleImage('images', '圖冊')->help('請上傳圖片格式')->removable();
但是我們用到removeable()方法需要注意在form表單中不能使用MessageBag方法。
然后在數據模型中,我們必須這樣定義兩個方法,代碼如下:
public function getLogoAttribute($value)
{
return explode(',', $value);
}
public function setLogoAttribute($value)
{
$this->attributes['images'] = implode(',', $value);
}
完成以上操作,我們便成功的配置完多圖上傳。
到此,相信大家對“怎么使用Laravel admin后臺管理插件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。