fourstacks / nova-checkboxes
一个 Laravel Nova 字段。
Requires
- php: >=7.1.0
Requires (Dev)
- laravel/nova: ^1.0
- orchestra/testbench: 3.7.*
- phpunit/phpunit: ^7.0
README
注意
现在 Nova 中有一个名为 Boolean Group 的本地字段,当使用 saveUncheckedValues
选项时,它可以复制此字段。如果您使用此包并启用该选项,建议您切换到本地 Nova 字段,因为这个包只是偶尔维护。
Nova 应用程序的复选框字段
此包包含一个 Laravel Nova 字段,可以将复选框数组添加到您的 Nova 资源表单中,并显示这些字段的输入。
安装
您可以通过 composer 在使用 Nova 的 Laravel 应用程序中安装此包
composer require fourstacks/nova-checkboxes
示例
Nova 复选框在 Nova 索引视图上(带有
displayUncheckedValuesOnIndex
选项)
用法
要添加复选框字段,请使用您的 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)。有关更多信息,请参阅 许可证文件。