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

发布时间:2021-11-06 11:47:14 作者:iii
来源:亿速云 阅读:205

本篇内容主要讲解“怎么使用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 的多种模型关系

  mysqlmongodb、pgsql 等多数据库支持

  支持引入第三方前端库

  数据库和 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后台管理插件”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. 简单演示django使用二
  2. Django后台管理系统的图文使用教学

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:如何配置xtrabackup备份mysql数据库

下一篇:jQuery的事件方法有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》