the-riptide/laravel-dynamic-dashboard

快速轻松地生成动态仪表盘的方法


README

快速轻松地为项目设置仪表盘

前言

此软件包是使用TALL堆栈开发的。这意味着需要安装Laravel、Livewire、Alpine和Tailwind。

此软件包与 the-riptide/laravel-dynamic-text 软件包配合良好,允许您从前端将文本内联到数据库中,以便管理员用户可以立即从仪表盘中编辑它。

使用此软件包,设置大多数仪表盘变得容易。无需创建仪表盘视图、控制器、模型或迁移。您需要做的只是迁移一次,然后在特定文件夹中设置一个单文件,在该文件中您指定模型字段、要在索引页上显示的内容、关系和函数调用。

完成这些后,软件包将负责其余工作。

请注意,此软件包处于Beta测试阶段。许多功能仍在开发中。测试也尚未设置。

此外,此软件包不是仅调用一个模型(例如,文章模型),而是使用每个字段一个模型(例如,字符串模型)并将它们作为链表链接起来。

这的缺点是数据库调用将比通常多得多。尽管有一些缓存可以帮助减少这种开销,但该软件包仍然不适用于高流量项目。相反,它更适合流量每日只有数百而不是数千的简单网站。

计划在将来减少数据库调用,以便该软件包也能很好地与高流量网站配合工作。

安装

要安装此软件包,请使用

php composer require the-riptide/laravel-dynamic-dashboard

之后,您需要迁移。您可以使用以下命令发布文件

php artisan vendor:publish

然后从列表中选择此软件包。

因为我们使用livewire,所以您需要将App\Livewire文件夹添加到其中,以确保不会出现错误。文件夹可以保持为空。

使用

在App文件夹中已创建一个名为Dyndash的文件夹。在其内部,有一个示例文件,它显示了文件的基本布局。

要创建新的仪表盘项,您可以使用以下 artisan 命令

php artisan dyndash:create YourName

这将创建一个在dyndash配置文件中指定的文件夹中的dyndash文件。默认情况下是应用程序文件夹中的'Dyndash'。此文件将包含三个函数供您填充。这些函数是

  • index
  • fields
  • relationships

每个这些都需要返回一个集合。简而言之,'index' 函数确定仪表盘索引页上的列。'fields' 函数确定您的dyndash中的字段,而'relationships'确定当前类型应与哪些其他Dyndash类型有关系。

目前尚无法设置与外部模型的关系。此功能即将推出。

fields

'fields' 方法是您指定将在YourNameHere中使用的字段的地方。您提供的键将是字段的名称。在子数组中,您只需要指定您希望此字段为哪种类型的字段。因此,如果您想要一个文本字段,则应使用

'type' => 'text'

这就是您需要做的全部工作以获得一个可用的仪表盘项。

例如

public function fields()
{
    return collect([
    	'title' => [
            'type' => 'string'
        ],

        'image' => [
            'type' => 'image',
        ],

        'body' => [
            'type' => 'text'
        ],
    ]);
}

将生成一个非常简单的文章布局。

目前,可用的数据类型有

  • 布尔值
  • 日期
  • 下拉菜单
  • 图片
  • 整数
  • 字符串
  • 文本
  • 时间

每个这些都与标准仪表盘输入字段、验证规则、占位符文本等关联。想要更改这些值中的任何一个吗?在项目中的'fields'子数组中打开一个,并在那里指定新值。

例如

'title' => [
    'type' => 'string',

    'attributes' => [
        'placeholder' => 'Enter your title here...',
    ],
],

您可以设置新的'placeholder'文本、仪表盘上显示的新'title'以及新的验证'规则'。

另一种选择是指定一个新的'component'。这将允许您创建一个自定义组件,该组件将代替该模型的默认组件。

对于下拉菜单,您还需要提供一个包含下拉菜单项的额外数组。在'attributes'部分中,创建一个名为'items'的子数组。在这里,指定您的下拉菜单项。键将是分配给选择项的值,内容将是作为下拉文本显示的内容。

index

在index方法中,您指定您想要在索引中作为列显示的字段。您可以直接插入它们。如果您需要显示字段中的值以外的内容,请添加一个子数组,其中设置'function'为true。

如下所示

public function index()
{
    return collect([
        'title',
         'show' => [
             'function' => true,
        ]
    ]);
}

如果您这样做,那么包将查找同一文件中具有您指定的名称的方法。

因此,在上面的示例中,它将查找

public function show() { return 'Hello world!'; }

您设置的任何字段都将可用于此方法。您可以像访问任何正常对象的属性一样访问它们(例如 $this->title)。

注意,这些函数也可以在其他地方使用。

关系

您可以通过在Relationship函数中的集合内创建条目来将任何类型与任何类型连接。键需要是您要连接模型的类型的名称。如果该类型具有名为'head'的字段,则该关系将显示在仪表盘中。'head'字段将在仪表盘中显示。

如果没有在指定的类型上定义'head'字段或您想要在仪表盘下拉菜单中显示不同的值,请创建一个子数组,其中指定您想要使用的字段,键为'show'。

public function relationships() : Collection
{
    return collect([
        'Event' => [
            'show' => 'name',

        ],
    ]);
}

要在前端调用所有相关模型,请使用以下语法

$events = $article->relationship('Event');

别名

别名将根据您指定的第一个字段自动生成。因此,请确保这不是一个下拉菜单、日期、时间、文件或图像!

创建新实例

通过索引创建类型的新实例是自动启用的。如果您不希望这样做,请在类型文件中将$canCreate设置为false。

protected $canCreate = false

在前端访问模型

目前,您可以'find'和'get'类型。我们将在将来添加一个外观,以启用与Laravel中相同的标准调用。

目前,请使用

(new Type)->find($x); (new Type)->get();

这将分别返回一个实例和一个集合。

对于find,您可以使用别名或id。

first()功能将很快实现。

路由

该包设置了三个标准路由

'/dashboard/create/{type}' '/dashboard/edit/{type}/{id}' '/dashboard/{type}'

其中'type'是您的仪表盘项的名称。

更改类型中的字段

要更新现有模型中的类型字段,首先在字段列表中做出更改,然后运行

php artisan dyndash:modify [TypeName]

目前,此命令允许您添加新字段、删除现有字段、调整字段顺序和更改字段类型。

为了避免错误,不要同时进行多个步骤。相反,每次只做一种类型的更改。

播种和工厂

工厂存在,可以像这样运行

$type = (new Type)->factory();

这将生成一个带有数据的该类型实例。

您也可以将数据输入到类型中,例如在一个种子文件中,如下所示

$type = (new Type)->create($data);

这将然后将数据保存到类型中并将其保存到数据库。

订单设置器

用户可以使用集成的订单设置器在仪表板中自动重新排序类型。这是默认实现的。

如果您想让它不适用于某些内容,您可以在模型文件中将以下内容放入类型中

protected $canOrder = false;

然后它将使用'updated_at'列。

想使用不同的列?设置protected $order_by = [different_column]并将使用该列。

管理员权限

有两种方式可以给用户赋予管理员权限。第一种是前往您的'env'文件,并将他们的电子邮件设置为DASH_EMAIL='their@email'。目前,只能以这种方式设置一个电子邮件。

或者,您可以去dyndash配置文件,并将他们的电子邮件添加到'emails'中。

无论您如何操作,使用此电子邮件注册的账户将能够访问仪表板。

小心!如果您这里有未注册的额外电子邮件,人们可能会使用这些电子邮件注册并访问仪表板。这不是您想要的。

这是一个临时解决方案。我们计划在未来版本中改进这一点。

仪表板徽标

如果您想在仪表板中设置自己的徽标,请进入配置,在'application-mark'位置放置文件名和公共文件夹中的路径。它将在仪表板中显示。

仪表板菜单中的额外条目

您可以通过将它们添加到dyndash配置文件下的'menu_items'标题中来向仪表板添加新条目。一旦添加,它们将自动包含在内。键将是列出名称。'route'应设置为您想要使用的命名路由。