izica / relations-widgets-for-backpack
用于在laravel backpack中预览模型关系的Widget
3.3.2
2023-07-02 16:21 UTC
Requires
- backpack/crud: ^4.0|^4.1.0|^5.0|^6.0
README
3.0 新特性
- relation_table 搜索输入
- relation_table 创建按钮与关系属性引用
- relation_table 分页
安装
composer require izica/relations-widgets-for-backpack
屏幕截图
功能
- 在显示操作中使用Widget显示关系
- 根据条件显示或隐藏面板或字段
- 通过闭包构建字段值
- 使用点ORM表示法访问关系字段
文档
-
relation_panel
name
- 关系名称label
- 面板标签backpack_crud
- backpack crud urlbuttons
(可选) - 设置false
隐藏所有操作按钮button_show
(可选) - 设置false
隐藏button_edit
(可选) - 设置false
隐藏visible
(可选) - 闭包用于隐藏或显示面板fields
(可选) - 字段数组,默认从模型的fillable
获取列name
- 名称label
- 字段标签closure
- 使用闭包代替名称字段visible
(可选) - 闭包用于隐藏或显示面板
-
relation_table
name
- (必填) 关系名称label
- 面板标签relation_attribute
- (可选) 用于传递按钮_create 的url参数名称search
- (可选)closure
,启用搜索输入per_page
- (可选) 启用分页,默认为null
backpack_crud
- backpack crud urlbuttons
(可选) - 设置false
隐藏所有操作按钮button_create
(可选) - 设置false
隐藏button_show
(可选) - 设置false
隐藏button_edit
(可选) - 设置false
隐藏button_delete
(可选) - 设置false
隐藏visible
(可选) -closure
用于隐藏或显示面板columns
(可选) - 列数组,默认从模型的fillable
获取列name
- 名称label
- 字段标签closure
- 使用closure
代替名称字段传递值
用法
关系面板
belongsTo
、hasOne
use Backpack\CRUD\app\Library\Widget; protected function setupShowOperation() { Widget::add([ 'type' => 'relation_panel', 'name' => 'account_contact', 'label' => 'Account contact info', 'backpack_crud' => 'accountcontact', 'visible' => function($entry){ return $entry->is_public_person; }, 'buttons' => false, 'fields' => [ [ 'label' => 'Birthdate', 'closure' => function($entry){ return date('d.M.Y', $entry->birthdate); } ], [ 'label' => 'Contact phone', 'name' => 'contact_phone', ], [ 'label' => 'Contact email', 'name' => 'contact_email', ], [ 'label' => 'Address', 'name' => 'address.name', 'visible' => function($entry){ return !!$entry->address; } ], ], ])->to('after_content'); }
关系表
hasMany
protected function setupShowOperation() { Widget::add([ 'type' => 'relation_table', 'name' => 'order_cargos', 'label' => 'Order cargo list', 'backpack_crud' => 'ordercargo', 'visible' => function($entry){ return $entry->order_cargos->count() > 0; }, 'search' => function ($query, $search) { return $query->where('name', 'like', "%{$search}%"); }, 'relation_attribute' => 'order_id', 'button_create' => true, 'button_delete' => false, 'columns' => [ [ 'label' => 'Type', 'name' => 'order_cargo_type.name', ], [ 'label' => 'Weight', 'name' => 'weight', ], [ 'label' => 'Value, $', 'closure' => function($entry){ return "{$entry->value}$"; } ], ], ])->to('after_content'); }
如何启用创建相关模型
您需要设置
button_create
=>true
relation_attribute
=>attribute_name
接下来您需要在关系/选择字段中添加 default
值
CRUD::addField([ 'type' => "relationship", 'name' => 'order', 'default' => $_GET['order_id'] ?? null ]);