i9code / laravelmetronic2
方便地将 Laravel 与 Metronic 集成
Requires
- php: >=5.5.9
- laravel/framework: ~5.1.12|~5.2.0|~5.3.0|~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-09-15 09:31:23 UTC
README
1. 安装
-
使用 composer 需求此包
composer require i9code/laravelmetronic2 -
将服务提供者添加到
config/app.php中的providersLaravel 5.5 使用包自动发现,因此不需要您手动添加 ServiceProvider
I9code\laravelmetronic2\ServiceProvider::class,
-
发布公共资源
php artisan vendor:publish --provider="I9code\laravelmetronic2\ServiceProvider" --tag=assets
2. 更新
-
要更新此包,首先更新 composer 包
composer update i9code/laravelmetronic2 -
然后,使用
--force标志发布公共资源以覆盖现有文件php artisan vendor:publish --provider="I9code\laravelmetronic2\ServiceProvider" --tag=assets --force
3. 使用
要使用模板,创建一个 blade 文件,并用 @extends('metronic2::page') 扩展布局。此模板生成以下部分
title:用于<title>标签content_header:页面标题,位于内容上方content:页面的全部内容css:额外的样式表(位于<head>中)js:额外的 JavaScript(在</body>之前)
所有部分都是可选的。您的 blade 模板可能看起来像以下示例。
{{-- resources/views/admin/dashboard.blade.php --}}
@extends('metronic2::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 指令为 css 和 javascript 提供堆叠。
{{-- resources/views/admin/dashboard.blade.php --}}
@push('css')
@push('js')
现在,您只需从控制器返回此视图即可,就像平常一样。查看 AdminLTE 以了解如何为您的管理面板构建美观的内容。
4. artisan 命令 make:metronic2
注意:仅适用于 Laravel 5.2 及更高版本
此包附带一个 make:metronic2 命令,其行为与 make:auth(在 Laravel 5.2 中引入)完全相同,但用 AdminLTE 样式的视图替换了认证视图。
php artisan make:metronic2
此命令应在全新应用程序上使用,就像 make:auth 命令一样
4.1 使用 make:metronic2 命令之前使用认证视图
如果您想手动使用包含的与认证相关的视图,您可以创建以下文件,并在每个文件中只添加一行
resources/views/auth/login.blade.php:
@extends('metronic2::login')
resources/views/auth/register.blade.php
@extends('metronic2::register')
resources/views/auth/passwords/email.blade.php
@extends('metronic2::passwords.email')
resources/views/auth/passwords/reset.blade.php
@extends('metronic2::passwords.reset')
默认情况下,登录表单包含一个链接到注册表单。如果您不想有注册表单,请将 register_url 设置为 null,则不会显示链接。
5. 配置
首先,发布配置文件
php artisan vendor:publish --provider="I9code\laravelmetronic2\ServiceProvider" --tag=config
现在,编辑 config/metronic2.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' ], ],
使用单个字符串,您指定一个菜单标题项以分隔项目。使用数组,您指定一个菜单项。text 和 url 或 route 是必需的属性。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 I9code\laravelmetronic2\Menu\Builder; use I9code\laravelmetronic2\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/metronic2.php
'filters' => [ I9code\laravelmetronic2\Menu\Filters\ActiveFilter::class, I9code\laravelmetronic2\Menu\Filters\HrefFilter::class, I9code\laravelmetronic2\Menu\Filters\SubmenuFilter::class, I9code\laravelmetronic2\Menu\Filters\ClassesFilter::class, //I9code\laravelmetronic2\Menu\Filters\GateFilter::class, Comment this line out MyApp\MyMenuFilter::class, ]
运行时菜单配置
您也可以在运行时配置菜单,例如在任意服务提供商的boot方法中。如果您菜单不是静态的,例如它依赖于您的数据库或区域设置,请使用此方法。您也可以结合这两种方法。菜单将简单地连接起来,服务提供商的顺序决定了菜单中的顺序。
要运行时配置菜单,为MenuBuilding事件注册一个处理程序或回调,例如在服务提供商的boot()方法中
use Illuminate\Contracts\Events\Dispatcher; use I9code\laravelmetronic2\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脚本标签注入到metronic2::page.blade文件中。
'plugins' => [ 'datatables' => true, ]
同时支持Select2插件。如果设置为true,将自动将必要的javascript CDN脚本标签注入到metronic2::page.blade文件中。
'plugins' => [ 'datatables' => true, 'select2' => true, ]
同时支持ChartJS插件。如果设置为true,将自动将必要的javascript CDN脚本标签注入到metronic2::page.blade文件中。
'plugins' => [ 'datatables' => true, 'chartjs' => true, ]
6. 翻译
目前,默认提供英语、德语、法语、荷兰语、葡萄牙语和西班牙语的翻译。只需在config/app.php中指定语言。如果您需要修改文本或添加其他语言,可以发布语言文件
php artisan vendor:publish --provider="I9code\laravelmetronic2\ServiceProvider" --tag=translations
现在,您可以在resources/lang/vendor/metronic2中编辑翻译或添加语言。
7. 自定义视图
如果您需要完全控制提供的视图,可以发布它们
php artisan vendor:publish --provider="I9code\laravelmetronic2\ServiceProvider" --tag=views
现在,您可以在resources/views/vendor/metronic2中编辑视图。
8. 问题、疑问和Pull Requests
您可以在问题部分报告问题和提出疑问。请以ISSUE: 开始您的问题,以QUESTION: 开始您的疑问
如果您有问题,请首先查看已关闭的问题。随着时间的推移,我已经回答了许多问题。
要提交Pull Request,请首先Fork此仓库,创建一个新的分支,并在其中提交您的新/更新代码。然后从您的新的分支打开Pull Request。有关更多信息,请参阅此指南。