fourstacks/nova-checkboxes

此包已被弃用且不再维护。没有建议的替代包。

一个 Laravel Nova 字段。

v0.1.7 2019-12-17 14:42 UTC

This package is auto-updated.

Last update: 2024-05-18 00:47:29 UTC


README

注意

现在 Nova 中有一个名为 Boolean Group 的本地字段,当使用 saveUncheckedValues 选项时,它可以复制此字段。如果您使用此包并启用该选项,建议您切换到本地 Nova 字段,因为这个包只是偶尔维护。

Nova 应用程序的复选框字段

此包包含一个 Laravel Nova 字段,可以将复选框数组添加到您的 Nova 资源表单中,并显示这些字段的输入。

安装

您可以通过 composer 在使用 Nova 的 Laravel 应用程序中安装此包

composer require fourstacks/nova-checkboxes

示例

Nova 复选框在 Nova 索引视图上(带有 displayUncheckedValuesOnIndex 选项) Nova 复选框在 Nova 索引视图上(带有 displayUncheckedValuesOnIndex 选项)

Nova 复选框在 Nova 详细视图上 Nova 复选框在 Nova 详细视图上

Nova 复选框在 Nova 表单上 Nova 复选框在 Nova 表单上

用法

要添加复选框字段,请使用您的 Nova 资源中的 Fourstacks\NovaCheckboxes\Checkboxes 字段

namespace App\Nova;

use Fourstacks\NovaCheckboxes\Checkboxes;

// ...

class Member extends Resource
{
    // ...

    public function fields(Request $request)
    {
        return [
            // ...

            Checkboxes::make('Hobbies'),

            // ...
        ];
    }
}

如果您希望使用此包的默认配置,则还应确保您的 Eloquent 模型将您希望用于复选框字段的属性转换为数组

namespace App;

// ...

class Member extends Model
{
    protected $casts = [
        'hobbies' => 'array'
    ]
}

例外情况是,如果您选择使用 saveAsString 选项(见下文配置),在这种情况下,您应确保您没有将该属性转换为数组。

配置

此包包含各种选项,您可以使用这些选项来自定义复选框字段值的保存和显示方式

选项

参数: array

您创建的每个复选框字段都应该包含 options。这些控制您表单上显示的复选框,由标签和底层值组成

Checkboxes::make('Hobbies')
    ->options([
        'sailing' => 'Sailing',
        'rock_climbing' => 'Rock Climbing',
        'archery' => 'Archery'
    ])

saveAsString

默认情况下,此包将复选字段中选中的项目保存到数组中,保存在您的数据库的属性列中

[sailing,rock_climbing]

这要求您在 Eloquent 模型上设置 $casts 属性为数组(见用法)。

但是,如果您愿意,可以将选中的项目保存为一个简单的逗号分隔的字符串

sailing,rock_climbing

使用以下选项来实现此功能

Checkboxes::make('Hobbies')
    ->options([
        'sailing' => 'Sailing',
        'rock_climbing' => 'Rock Climbing',
        'archery' => 'Archery'
    ])
    ->saveAsString()

saveUncheckedValues

默认情况下,此字段将仅保存到数据库中的选中项。但是,如果您希望保存您设置的选项以及它们是否被选中,可以通过添加此选项来实现

Checkboxes::make('Hobbies')
    ->options([
        'sailing' => 'Sailing',
        'rock_climbing' => 'Rock Climbing',
        'archery' => 'Archery'
    ])
    ->saveUncheckedValues()

这将把结果保存到您的数据库中,作为一个对象

{sailing:true,rock_climbing:false,archery:true}

请注意,为了使用此选项,您不能同时使用 saveAsString 选项 - 它们是二选一。此外,您必须确保在您的 eloquent 模型上已将 $casts 属性设置为数组(见用法)。

displayUncheckedValuesOnIndex

默认情况下,索引上只显示已选选项。如果您希望显示该字段的全部选项及其选中/未选中状态,可以添加此选项。

Checkboxes::make('Hobbies')
    ->options([
        'sailing' => 'Sailing',
        'rock_climbing' => 'Rock Climbing',
        'archery' => 'Archery'
    ])
    ->displayUncheckedValuesOnIndex()

请注意,这并不要求您使用 saveUncheckedValues 保存所有未选中的值。您可以使用任何与该选项结合的数据保存方法。

displayUncheckedValuesOnDetail

默认情况下,详情屏幕上只显示已选选项。如果您希望显示该字段的全部选项及其选中/未选中状态,可以添加此选项。

Checkboxes::make('Hobbies')
    ->options([
        'sailing' => 'Sailing',
        'rock_climbing' => 'Rock Climbing',
        'archery' => 'Archery'
    ])
    ->displayUncheckedValuesOnDetail()

请注意,这并不要求您使用 saveUncheckedValues 保存所有未选中的值。您可以使用任何与该选项结合的数据保存方法。

在列中显示复选框

默认情况下,一列中只显示已选值,但如果您有足够的空间,可以使用字段上的 columns 方法将它们拆分成多个列。

Checkboxes::make('Hobbies')
    ->options([
        'sailing' => 'Sailing',
        'rock_climbing' => 'Rock Climbing',
        'archery' => 'Archery'
    ])
    ->columns(3)

这将最多渲染 3 列,包含值。所以如果您选择了 8 个值,您将看到 3 列,每列分别有 3、3 和 2 个值。

变更日志

有关最近更改的更多信息,请参阅 变更日志

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件