warkensoft/laradmin

Laravel的一个简单、强大的即插式管理界面。

2.2.6 2023-09-28 05:33 UTC

README

Laravel的一个简单、强大的即插式管理界面。

该项目起源于希望拥有一个简单易用的管理界面,可以将该界面插入到新的或现有的基于Laravel的网站中,以管理任何可编辑的内容。

Laradmin Screenshot

重要警告! 此包仍在开发中。随着时间的推移,可能会有所变化。我们将尽力确保不会破坏现有功能,但请自行承担风险使用。

内容

安装

使用Composer,只需在命令行运行以下命令

$ composer require warkensoft/laradmin:^2.0
$ php artisan vendor:publish --provider="Warkensoft\Laradmin\Provider" --tag=config --tag=public

这将安装包到您的Laravel应用程序,并将laradmin.php配置文件发布到您的配置文件夹。您将使用此文件来配置Laradmin在应用程序中的运行方式。它还将将Laradmin所需的一些jQuery插件发布到/public/vendor/laradmin/文件夹。

界面使用的所有视图都可以根据需要进行覆盖。要发布所有可自定义资产,请使用

$ php artisan vendor:publish --provider="Warkensoft\Laradmin\Provider"

如何在新的Laravel安装上安装此包的逐步示例在此处描述

重要安全警告!

默认情况下,Laradmin非常不安全,只需要登录用户即可访问界面。强烈建议通过中间件进行进一步的安全定制。有关保护Laradmin的更多信息,请参阅。

示例页面编辑

Laradmin Page Editing Screenshot

配置选项

以下选项可以在laradmin.php配置文件中进行自定义。

中间件

定义要查看Laradmin界面所需的中间件。默认情况下,它只需要一个登录用户。

'middleware' => [ 'auth' ]

adminpath

Laradmin区域的基准路径。例如,默认设置将允许您通过以下链接访问Laradmin界面:https://yourdomain.com/laradmin/dashboard

'adminpath'  => 'laradmin',

layout

用于显示Laradmin界面的基本模板。如果需要,您可以用自己的模板替换它,但通常更好的做法是通过发布视图并进行修改来实现。

'layout'       => 'laradmin::layouts.admin',

index-length

允许您定义在模型索引中每页列出多少条记录。

'index-length' => 10,

crudable

在此处定义在Laradmin界面中可编辑的模型。以下示例定义了\App\User模型可在Laradmin中编辑,以及路径和路由以及将用于编辑记录的字段。有关字段本身的详细信息,请参阅字段配置。

'crudable'     => [

	// Sample entry for a standard laravel user record.
	'\\App\\User' => [
		'path'      => 'users', // The path to the model under /laradmin/
		'route'     => 'users', // The route name used for the model
		'nav_title' => 'Users', // The title used in the navigation sidebar
		'plural'    => 'Users', // The plural form of the model
		'singular'  => 'User',  // The singular form of the model
		'nav_icon'  => 'fa-users',  // The font-awesome icon for admin nav elements

		// Fields used for model data
		'fields'    => [
			[
				'type'        => \Warkensoft\Laradmin\Fields\Input::class,
				'name'        => 'name',
				'label'       => 'User Name',
				'placeholder' => 'Somebody Smith',
				'default'     => '',
				'rules'       => 'required',
			],
			[
				'type'        => \Warkensoft\Laradmin\Fields\Input::class,
				'name'        => 'email',
				'label'       => 'Email Address',
				'placeholder' => 'somebody@example.com',
				'default'     => '',
				'rules'       => 'required',
			],
			[
				'type'        => \Warkensoft\Laradmin\Fields\Password::class,
				'name'        => 'password',
				'label'       => 'Password',
				'placeholder' => 'Enter password here...',
				'default'     => '',
				'rules'       => 'confirmed',
				'searchable'  => false,
			],
			[
				'type'        => \Warkensoft\Laradmin\Fields\Password::class,
				'name'        => 'password_confirmation',
				'label'       => 'Confirm Password',
				'placeholder' => 'Repeat password here...',
				'default'     => '',
				'rules'       => '',
				'searchable'  => false,
			],
		],

		// Define what columns should appear on the model index. field=>label pairs
		'index'     => [
			'id'    => 'ID',
			'name'  => 'Name',
			'email' => 'Email Address',
		],

        // Show a widget on the dashboard for this model.
        'dashboard-widget' => [
            'name',
            'email',
            'created_at',
        ],

		// Define the default sort order for the model index and dashboard widget.
		'sort'      => [
			'key' => 'name',    // Sort field name
			'dir' => 'asc',     // Sort field direction
		],
	],  // End of User definition

],

字段配置

您希望Laradmin允许修改的每个字段都必须在fields数组中定义为字段声明。这些通常遵循以下模式

'type'        => \Warkensoft\Laradmin\Fields\Input::class,
'name'        => 'name',
'label'       => 'User Name',
'placeholder' => 'Somebody Smith',
'default'     => '',
'rules'       => 'required',

字段 type

type 变量定义了Laradmin界面中的字段类。以下类目前存在。

您可以根据需要在自己的应用程序中定义额外的类,只要它们符合 FieldContract 接口。通过这种方式,您可以使用所需的任何额外类型的字段扩展 Laradmin 平台。

Field 类的目的有两个。首先,它们应该定义用于显示字段的视图。这是通过类上的简单 view() 方法完成的,该方法返回一个包含视图名称的字符串。

其次,它们能够在数据保存之前过滤和修改提交的模型数据,以便进行必要的更改。

有关如何配置这些字段类型的具体细节,请参阅 Laradmin 字段类型 & 配置

保护 Laradmin

Laradmin 的安全性通过在 laradmin.php 配置文件中定义的中件件进行控制。默认情况下,它只要求使用 auth 中件件登录用户。您可以通过修改配置中的 middleware 参数值来定义额外的中件件要求。例如,您可能希望创建一个新中件件文件,要求登录用户在他们的账户中有一个 'is_admin' 参数,并且只有当它设置为 true 时才允许他们访问。

构建 Laravel 的中件件超出了本文件的范畴,但您可以在 Laravel 文档中进一步研究。 https://laravel.net.cn/docs/10.x/middleware

项目目标和目标

  • 与标准的 Laravel 用户身份验证一起工作。
  • 通过 composer 以简单的依赖关系添加。
  • 可以通过自定义脚本完全覆盖,以按需扩展。
  • 干净、简单的界面。
  • 可扩展以支持任何类型的内容数据。
  • 支持常见的模型关系。
  • 社区驱动。

架构想法

  • 完全通过配置文件控制。
  • 配置文件定义了支持 admin CRUD 的模型列表。
  • 模型配置描述
    • 验证规则
    • 文本标签(复数、单数等)
    • 控制器类名(如果已覆盖)
    • 路由名称
    • 路径
    • 显示的索引字段(用于视图)
  • 配置文件定义了每个模型上的每个字段的以下内容
    • 标签
    • 名称
    • 类型(输入、文本区域、复选框、单选按钮、选择、图片上传、关系、标签列表等)
    • 占位符
    • 默认值
    • 关系详情(如果有)
  • 字段类型直接绑定到视图部分。