gluttm/laravel-adminlte

Gluttm 为 Laravel 提供 Easy AdminLTE 集成,满足我的需求而修改

dev-master 2020-09-28 07:10 UTC

This package is auto-updated.

Last update: 2024-09-28 16:51:54 UTC


README

请访问原始 https://github.com/jeroennoten/Laravel-AdminLTE,我只是根据我的需求进行了修改,,,

Laravel 5 集成 Easy AdminLTE

Latest Version on Packagist Build Status Quality Score StyleCI Total Downloads

本包提供了一种简单的方法,快速使用 Laravel 5 设置 AdminLTE。它没有除 Laravel 之外的要求和依赖,因此您可以立即开始构建您的管理面板。该包仅提供可扩展的 Blade 模板和高级菜单配置选项。还包括一个替代 make:auth Artisan 命令的命令,该命令使用 AdminLTE 样式的视图而不是默认的 Laravel 视图。

  1. 安装
  2. 更新
  3. 使用
  4. make:adminlte artisan 命令
    1. 不使用 make:adminlte 命令使用认证视图
  5. 配置
    1. 菜单
    1. 插件
  6. 翻译
  7. 自定义视图
  8. 问题、问题和拉取请求

1. 安装

  1. 使用 composer 安装此包

    composer require GluTtm/laravel-adminlte
    
  2. 将服务提供者添加到 config/app.php 中的 providers

    Laravel 5.5 使用包自动发现,因此不需要手动添加 ServiceProvider

    GluTtm\LaravelAdminLte\ServiceProvider::class,
  3. 发布公共资产

    php artisan vendor:publish --provider="GluTtm\LaravelAdminLte\ServiceProvider" --tag=assets
    

2. 更新

  1. 要更新此包,首先更新 composer 包

    composer update GluTtm/laravel-adminlte
    
  2. 然后,使用 --force 标志发布公共资产以覆盖现有文件

    php artisan vendor:publish --provider="GluTtm\LaravelAdminLte\ServiceProvider" --tag=assets --force
    

3. 使用

要使用模板,创建一个 blade 文件,并使用 @extends('adminlte::page') 扩展布局。此模板生成以下部分

  • title:用于 <title> 标签
  • content_header:页面标题,位于内容上方
  • content:页面的全部内容
  • css:额外的样式表(位于 <head> 中)
  • js:额外的 JavaScript(位于 </body> 之前)

所有部分都是可选的。您的 blade 模板可能如下所示。

{{-- resources/views/admin/dashboard.blade.php --}}

@extends('adminlte::page')

@section('title', 'Dashboard')

@section('content_header')
    <h1>Dashboard</h1>
@stop

@section('content')
    <p>Welcome to this beautiful admin panel.</p>
@stop

@section('css')
    <link rel="stylesheet" href="/css/admin_custom.css">
@stop

@section('js')
    <script> console.log('Hi!'); </script>
@stop

注意:在 Laravel 5.2 或更高版本中,您还可以使用 @stack 指令为 cssjavascript 提供内容

{{-- resources/views/admin/dashboard.blade.php --}}

@push('css')

@push('js')

现在只需从您的控制器返回此视图即可,就像往常一样。查看 AdminLTE 以了解如何为您的管理面板构建美观的内容。

4. make:adminlte artisan 命令

注意:仅适用于 Laravel 5.2 及更高版本

本包包含一个 make:adminlte 命令,其行为与 make:auth(在 Laravel 5.2 中引入)完全相同,但用 AdminLTE 样式的视图替换了认证视图。

php artisan make:adminlte

应像 make:auth 命令一样使用此命令,用于新应用程序

4.1 不使用 make:adminlte 命令使用认证视图

如果您想手动使用包含的认证相关视图,可以创建以下文件,并在每个文件中仅添加一行内容

  • resources/views/auth/login.blade.php:
@extends('adminlte::login')
  • resources/views/auth/register.blade.php
@extends('adminlte::register')
  • resources/views/auth/passwords/email.blade.php
@extends('adminlte::passwords.email')
  • resources/views/auth/passwords/reset.blade.php
@extends('adminlte::passwords.reset')

默认情况下,登录表单包含注册表单的链接。如果您不想显示注册表单,请将 register_url 设置为 null,则不会显示链接。

5. 配置

首先,发布配置文件

php artisan vendor:publish --provider="GluTtm\LaravelAdminLte\ServiceProvider" --tag=config

现在,编辑 config/adminlte.php 以配置标题、皮肤、菜单、URL 等等。所有配置选项在注释中都有解释。然而,我想重点说明一下 menu 配置。

5.1 菜单

您可以根据以下方式配置您的菜单

'menu' => [
    'MAIN NAVIGATION',
    [
        'text' => 'Blog',
        'url' => 'admin/blog',
    ],
    [
        'text' => 'Pages',
        'url' => 'admin/pages',
        'icon' => 'file'
    ],
    [
        'text' => 'Show my website',
        'url' => '/',
        'target' => '_blank'
    ],
    'ACCOUNT SETTINGS',
    [
        'text' => 'Profile',
        'route' => 'admin.profile',
        'icon' => 'user'
    ],
    [
        'text' => 'Change Password',
        'route' => 'admin.password',
        'icon' => 'lock'
    ],
],

使用单个字符串,您指定一个菜单标题项以分隔条目。使用数组,您指定一个菜单项。需要 texturlroute 作为必需属性。icon 是可选的,如果您省略它,您将获得一个 开放圆圈。您可以使用的图标来自 Font Awesome。只需指定图标的名称,它就会出现在菜单项的前面。

如果您想有条件地显示菜单项,请使用 can 选项。这与 Laravel 的 Gate 功能集成。如果您需要有条件地显示标题,也需要将其包裹在数组中,就像其他菜单项一样,使用 header 选项

[
    [
        'header' => 'BLOG',
        'can' => 'manage-blog'
    ],
    [
        'text' => 'Add new post',
        'url' => 'admin/blog/new',
        'can' => 'add-blog-post'
    ],
]

自定义菜单过滤器

如果您需要自定义过滤器,可以轻松地向此包添加您自己的菜单过滤器。当您使用第三方授权包(而不是 Laravel 的 Gate 功能)时,这可能很有用。

例如与 Laratrust 一起使用

<?php

namespace MyApp;

use GluTtm\LaravelAdminLte\Menu\Builder;
use GluTtm\LaravelAdminLte\Menu\Filters\FilterInterface;
use Laratrust;

class MyMenuFilter implements FilterInterface
{
    public function transform($item, Builder $builder)
    {
        if (isset($item['permission']) && ! Laratrust::can($item['permission'])) {
            return false;
        }

        return $item;
    }
}

然后将其添加到 config/adminlte.php

'filters' => [
    GluTtm\LaravelAdminLte\Menu\Filters\ActiveFilter::class,
    GluTtm\LaravelAdminLte\Menu\Filters\HrefFilter::class,
    GluTtm\LaravelAdminLte\Menu\Filters\SubmenuFilter::class,
    GluTtm\LaravelAdminLte\Menu\Filters\ClassesFilter::class,
    //GluTtm\LaravelAdminLte\Menu\Filters\GateFilter::class, Comment this line out
    MyApp\MyMenuFilter::class,
]

运行时菜单配置

您还可以在运行时配置菜单,例如在任何服务提供者的引导中。如果您的菜单不是静态的,例如当它依赖于您的数据库或区域设置时,请使用此选项。您还可以结合两种方法。菜单将简单连接,服务提供者的顺序决定了菜单中的顺序。

要在运行时配置菜单,注册 MenuBuilding 事件的处理器或回调,例如在服务提供者的 boot() 方法中

use Illuminate\Contracts\Events\Dispatcher;
use GluTtm\LaravelAdminLte\Events\BuildingMenu;

class AppServiceProvider extends ServiceProvider
{

    public function boot(Dispatcher $events)
    {
        $events->listen(BuildingMenu::class, function (BuildingMenu $event) {
            $event->menu->add('MAIN NAVIGATION');
            $event->menu->add([
                'text' => 'Blog',
                'url' => 'admin/blog',
            ]);
        });
    }

}

配置选项与静态配置文件中相同。

一个更实际的示例,它实际上使用了翻译和数据库

    public function boot(Dispatcher $events)
    {
        $events->listen(BuildingMenu::class, function (BuildingMenu $event) {
            $event->menu->add(trans('menu.pages'));

            $items = Page::all()->map(function (Page $page) {
                return [
                    'text' => $page['title'],
                    'url' => route('admin.pages.edit', $page)
                ];
            });

            $event->menu->add(...$items);
        });
    }

此基于事件的策略用于确保构建菜单的代码仅在管理面板实际显示时运行,而不是在每次请求时。

活动菜单项

默认情况下,如果以下任一条件成立,则认为菜单项是活动的

  • 当前路径与 url 参数匹配
  • 当前路径是 url 参数的子路径
  • 如果它包含一个包含活动菜单项的子菜单

要覆盖此行为,您可以指定一个带有活动 URL、星号和正则表达式的数组作为 active 参数。示例

[
    'text' => 'Pages'
    'url' => 'pages',
    'active' => ['pages', 'content', 'content/*']
]

5.2 插件

默认支持 DataTables 插件。如果设置为 true,将自动将必要的 JavaScript CDN 脚本标签注入到 adminlte::page.blade 文件中。

'plugins' => [
    'datatables' => true,
]

还支持 Select2 插件。如果设置为 true,将自动将必要的 JavaScript CDN 脚本标签注入到 adminlte::page.blade 文件中。

'plugins' => [
    'datatables' => true,
    'select2' => true,
]

还支持 ChartJS 插件。如果设置为 true,将自动将必要的 JavaScript CDN 脚本标签注入到 adminlte::page.blade 文件中。

'plugins' => [
    'datatables' => true,
    'chartjs' => true,
]

6. 翻译

目前,默认提供英语、德语、法语、荷兰语、葡萄牙语和西班牙语的翻译。只需在 config/app.php 中指定语言即可。如果您需要修改文本或添加其他语言,可以发布语言文件

php artisan vendor:publish --provider="GluTtm\LaravelAdminLte\ServiceProvider" --tag=translations

现在,您可以在 resources/lang/vendor/adminlte 中编辑翻译或添加语言。

7. 自定义视图

如果您需要完全控制提供的视图,您可以发布它们。

php artisan vendor:publish --provider="GluTtm\LaravelAdminLte\ServiceProvider" --tag=views

现在,您可以在 resources/views/vendor/adminlte 中编辑视图。

8. 问题、疑问和拉取请求

您可以在 问题部分 报告问题并提出疑问。请以 ISSUE: 开始您的问题,以 QUESTION: 开始您的疑问。

如果您有疑问,请先检查已关闭的问题。随着时间的推移,我已经回答了很多问题。

要提交拉取请求,请先叉取此仓库,创建一个新分支,并将您的新/更新代码提交到其中。然后从您的新的分支打开拉取请求。有关更多信息,请参阅 此指南