advaith / seamless-admin
为Laravel提供无缝的Django风格管理面板设置
Requires
- php: ^8.0.2
- laravel/framework: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- laravel/laravel: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- orchestra/testbench: ^4.18|^5.20|^6.23|^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.5|^10.1
README
为Laravel提供无缝的Django风格管理面板设置。为管理员提供简单、非CMS表格管理器。
支持Laravel版本 6.*
、7.*
、8.*
、9.*
、10.*
、11.*
。请确保已安装至少PHP 8.0.2
。
安装步骤
-
要求包
运行以下命令将包安装到您的Laravel应用程序中
composer require advaith/seamless-admin
-
使用以下命令发布资产和配置文件
php artisan vendor:publish --provider="Advaith\SeamlessAdmin\SeamlessAdminServiceProvider"
这将创建配置文件夹中的
seamless.php
配置文件。这还将发布与此包相关的所有资产。注意:如果您在运行
composer update
后发现UI或管理员功能无法正常工作,请再次运行此命令,并使用标志--tag="seamless-admin-assets"
重新发布资产。这将用新的资产覆盖现有的资产。
缓存
SeamlessAdmin包使用缓存来提高包路由的加载时间。如果您在侧边栏中找不到您注册的模型,请尝试清除缓存。要清除缓存,请运行
php artisan seamless:clear
使用方法
在您的任何模型中使用提供的特性SeamlessAdmin
开始使用此包。示例
<?php namespace App\Models; use Advaith\SeamlessAdmin\Traits\SeamlessAdmin; ... class Post extends Model { use SeamlessAdmin; ... }
Et Voila!这就是开始的所有步骤。登录后,请访问/admin
以访问管理仪表板。
配置
seamless-admin.php
配置文件
prefix
:更改管理员路由的前缀。但是,这不会更改路由的名称。默认情况下,将使用/admin
作为前缀api_prefix
:更改API路由的前缀。middleware
:管理员路由的全局中间件。默认情况下,已设置auth中间件。api_middleware
:API路由的中间件组。layout
:您可以通过更改此选项来自定义管理员页面使用的布局。确保适当提供,以包含动态内容。
模型特定配置
所有模型特定配置都应该放在相应的模型文件中。
属性
-
public bool $hasAdminPage
:将其设置为false
以防止模型在管理页面上显示。使用此属性而不是从模型中移除特性的优点是,当其他模型尝试检查外键时,这将用作获取其他列的提示。 -
public string $adminIcon
:我们使用lucide作为图标。输入您想使用的图标的名称。 -
public string $adminGroup
:添加一个值以更改模型在侧边栏中显示的组。 -
protected $primaryKey
:模型的主键将在需要时使用,即使它不是id
。 -
protected $fillable
:adminIndexFields
使用来自$fillable
和$hidden
变量的数据来显示默认值 -
protected $hidden
:adminIndexFields
使用来自$hidden
和$hidden
变量的数据来显示默认值
方法
public function adminIndexFields(): array
默认情况下,管理员索引页面将显示protected $fillable
的所有内容,排除protected $hidden
。要覆盖此内容,请使用方法adminIndexFields
并返回字段数组。
public function adminIndexFields(): array { return [ 'title', 'content' ]; }
public function adminOnCreate(array $fields): array
使用此方法来更改创建时保存的数据。例如,对于用户模型
public function adminOnCreate(array $fields): array { return [ ...$fields, 'password' => bcrypt($fields['password']) ]; }
此方法也可以用作钩子,因为它在创建条目之前触发。
public function adminOnEdit(array $fields): array
使用此方法在编辑时更改保存的数据。它的功能与adminOnCreate
方法类似。
public function adminCanAccessIndex(): bool
确定登录用户是否有权限访问模型数据。禁用对索引页的访问将移除当前用户对所有功能(查看、创建、编辑、删除)的访问。
public function adminCanAccessCreate(): bool
确定登录用户是否有权限创建新条目。
public function adminCanAccessEdit(): bool
确定登录用户是否有权限编辑数据库中的条目。
public function adminCanAccessDelete(): bool
确定登录用户是否有权限从数据库中删除数据。
public function __toString(): string
一个将模型实例转换为字符串的魔法方法。默认情况下,使用$fillable
字段。用法示例
public function __toString(): string { return "{$this->firstName} {$this->lastName}"; }
钩子
public function adminEdited(): void
:当模型被编辑时,此钩子会被触发public function adminCreated(): void
:当模型被创建时,此钩子会被触发
添加自定义页面
要向侧边栏添加自定义页面,请使用应用程序的AppServiceProvider
中的SeamlessAdmin
外观。示例
<?php namespace App\Providers; use Advaith\SeamlessAdmin\Facades\SeamlessAdmin; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { ... public function boot() { SeamlessAdmin::add('files.index', 'File', [ 'isAllowed' => fn() => auth()->user()->can('manage_files'), 'icon' => 'layout', 'group' => 'Blog' ]); } }
add
方法接受3个参数
- 路由名称。这是你在路由文件中定义的路由名称。注意:这不是url本身,而是路由的名称。
- 路由别名。这是将在管理员页面侧边栏中显示的名称。
- 一个可选的数组,包括
isAllowed
:路由是否对当前用户可见icon
:侧边栏中要显示的图标。我们使用lucide作为图标group
:侧边栏中的组,自定义路由应添加到此组。
要充分利用自定义页面,请在blade文件中扩展布局seamless::layout
。示例
@extends('seamless::layout') @section('title', 'Title') @section('header') <!-- This section will be appened to the header --> @endsection @section('content') <div class="container px-4 py-2"> The actual content here </div> @endsection @section('footer') <!-- This section will be added to the bottom of the page --> @endsection
将很快添加更多配置选项。如需请求新功能,请创建带有标签feature-request
的新问题。