samiksengupta / laravel-admin
快速设置Laravel项目的管理面板、API端点和路由
Requires
- php: ^8.0
- illuminate/support: ^9.0|^10.0
- spatie/laravel-html: ^3.2
- tymon/jwt-auth: ^2.0
- yajra/laravel-datatables-oracle: ^10.4
Requires (Dev)
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.0
README
快速设置Laravel项目的管理面板、API端点和路由。您可以使用此包向您的项目添加以下功能。
- 预构建的包含用户和角色管理的Admin面板。
- 用于您的模型、控制器和策略的基类,将自动处理CRUD操作、DataTable响应生成、验证、UI元素自定义等常见功能。
- 用于列表和CRUD操作的Blade视图,易于在项目侧扩展。
- 基于AdminLTE主题的Bootstrap UI,具有基于JavaScript的表单提交。
- 易于管理的基于角色的权限系统。
- 自动路由支持。
- API资源列表和测试器。
- 易于使用的自定义命令,可让您一次性创建符合Laravel Admin规范的模型、迁移、控制器、策略、权限和菜单项。
- 项目中的所有内容都可以被覆盖,以便进行精确控制。
安装
您可以通过composer安装此包
composer require samiksengupta/laravel-admin
用法
设置管理面板
在您的项目中将此包安装完成后,并在您的.env
文件中配置了数据库连接后,运行以下命令
php artisan admin:install
这将发布此包所需配置、资源和种子文件到您的项目,并运行迁移和种子文件。
如果您不希望运行种子文件,而是手动运行,可以在安装时使用--empty
选项。
php artisan admin:install --empty
如果您想强制覆盖所有文件,可以在安装时使用--force
选项。
php artisan admin:install --force
如果您最近更新了Laravel Admin包,可以在安装时使用--update
选项。这将仅覆盖资源和种子文件,并跳过一些选项。
php artisan admin:install --update
注意:如果您在安装时未使用--update
选项,您将提示用LaravelAdmin提供的文件替换database/seeders/DatabaseSeeder
。建议在第一次安装Laravel Admin时进行此操作,因为这将使使用php artisan db:seed
命令运行种子文件更加容易。
默认角色和用户
默认情况下,Laravel Admin安装了两个角色Dev
和Admin
。Dev是一个不受限制的角色,忽略所有权限设置(可以访问一切)。Admin被赋予大多数管理权限,不包括一些超级级别权限,例如管理删除设置和运行命令的权限。Dev可以授予Admin任何权限,如果他们想的话,并且Admin可以将他们的任何权限传递给之后创建的任何新角色。
如果您在安装时未使用--empty
选项,还将创建一个默认的Dev
用户以进行初始登录。以下凭据可用于登录。
在相同的安装条件下,如果您没有创建Admin
用户,您将被询问是否要创建一个。如果您继续,则需要提供基本用户数据以继续。
扩展Laravel Admin用户模型和生成策略
如果不使用--update
选项进行安装,安装脚本将自动尝试将默认的Laravel用户模型(App\Models\User
)设置为Laravel Admin提供的用户模型(Samik\LaravelAdmin\Models\User
)的子模型,然后为该用户模型生成策略。如果由于某种原因此过程失败,您需要手动进行此操作,并生成策略以确保一切顺利。
要完成此操作,您可以更改用户模型以扩展Laravel Admin的用户模型
namespace App\Models;
class User extends \Samik\LaravelAdmin\Models\User
{
}
然后使用以下命令生成用户策略
php artisan make:xpolicy UserPolicy
如果在此之前已存在某种形式的App\Policies\UserPolicy
,则不会创建或替换它。然后您需要确保策略类扩展了Laravel Admin的CRUD策略类(Samik\LaravelAdmin\Policies\CrudPolicy
)
namespace App\Policies;
use Samik\LaravelAdmin\Policies\CrudPolicy;
class UserPolicy extends CrudPolicy
{
}
创建管理面板模块
模块只是一组共同工作的模型、迁移、控制器和策略文件,它们一起表示您在管理面板中的数据。您可以使用以下命令一次性创建所有这些文件
php artisan make:module MyModule
这将创建一个新的模型类、为模型数据库表创建新的迁移、控制器和策略在其相应的位置。您可以在新创建的迁移文件中添加所需的列,然后运行迁移以生成包含这些列的表。
这些类与Laravel自己的模型/控制器/策略类不同的是,它们扩展了Laravel Admin的基本类,这些基本类为CRUD操作、验证、筛选生成、数据表响应生成等功能添加了额外功能。
如果您想快速生成此模型的默认CRUD权限以及访问相应Web路由的菜单项条目,可以使用以下命令
php artisan make:module MyModule --permissions --menuitems --seed
这将更新database/data/permissions.json
和database/data/menu-items.json
文件,然后使用这些文件运行种子来填充数据库。
如果您想最初跳过填充,可以省略--seed
选项,然后调整这些JSON文件并运行
php artisan db:seed --class=PermissionSeeder
手动填充权限(使用updateOrCreate操作)
php artisan db:seed --class=MenuItemSeeder
手动填充菜单项(使用截断和插入操作)
运行这些命令后,您应该有以下内容
App\Models
命名空间中的MyModule
类App\Http\Controllers\Admin
命名空间中的MyModuleController
类App\Policies
命名空间中的MyModulePolicy
类database/migrations
中的*_create_my_modules_table
文件database/data/menu-items.json
中的my-modules
路由菜单项条目database/data/permissions.json
中的MenuItem
权限条目- 如果启用了自动路由,将支持
my-modules
、my-modules/{id}
、my-modules/new
、my-modules/{id}/edit
、my-modules/{id}/delete
等路由
使用HasFileUploads特性
Laravel Admin附带一个特性,可以自动处理文件上传和删除。在您的模型中使用Samik\LaravelAdmin\Traits\HasFileUploads
特性,并指定文件存储的位置,模型将在创建时存储文件。在删除或更新时,旧的存储文件也将被删除。
namespace App\Models;
use Samik\LaravelAdmin\Models\BaseModel;
use Samik\LaravelAdmin\Traits\HasFileUploads;
class MyModel extends BaseModel
{
// use the trait
use HasFileUploads;
// specify the upload field
protected $uploadFields = ['myfile' => ['folder' => 'my-models', 'disk' => 'public']];
// specify the field type options for form generation and value display (optional)
public static function elements()
{
return [
'myfile' => [
'type' => 'file',,
'displayAs' => 'image'
],
];
}
}
在这个例子中,模型将期望请求中名为'myfile'的字段。此特性也将处理Base64编码的字段。在$uploadFields
配置中,如果没有指定文件夹,则假定名为'uploads'的文件夹。所有上传的文件都将存储在指定文件夹内的子文件夹中,按当前年月分组,以便于文件夹导航。
如果文件已上传但您无法通过URL访问它,请尝试生成符号链接
php artisan storage:link
测试
composer test
更新日志
请参阅变更日志获取最近更改的更多信息。
贡献
请参阅贡献指南获取详细信息。
安全
如果您发现任何安全相关的问题,请通过电子邮件samiksengupta@hotmail.com联系,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证 (MIT)。请参阅许可证文件获取更多信息。
Laravel 包模板
此包是用Laravel 包模板生成的。