gldrenthe89 / nova-calculated-field
Laravel Nova 的后端计算字段
v2.4.1
2022-03-21 08:57 UTC
Requires
- php: >=7.2.5
- laravel/nova: ~3.0
README
此包是在 codebykyle 的包基础上创建的,但经过大量重构和将大量 VueJS 代码更新到最新 Laravel Nova 代码后,我将其变成了一个新的包。
新特性
[版本 V2.3]
-- 修复了无法编辑监听字段的 bug
-- 添加了日期广播字段
-- 添加了日期监听字段
-- 为所有可见的监听字段添加了 '计算' 按钮
-- 在更新表单中添加了关闭计算的能力
[V2.2 版本更新]
-- 添加了 BelongsTo 广播字段
-- 添加了 MorphTo 广播字段
-- 添加了货币监听字段
-- 添加了隐藏监听字段
-- 代码已完全更新到最新的 Nova(2021-03-18)
以下是从 codebykyle 的旧文档中提取的部分,我并不擅长编写文档。所以请随意为此创建一个 PR。
安装
使用 composer 安装包
composer require gldrenthe89/nova-calculated-field
示例
<?php use Gldrenthe89\NovaCalculatedField\BroadcasterField; use Gldrenthe89\NovaCalculatedField\ListenerField; class MyResource extends Resource { public function fields(Request $request) { return [ BroadcasterField::make('Sub Total', 'sub_total') ->broadcastTo('total'), // can either be a String or an Array BroadcasterField::make('Tax', 'tax') ->broadcastTo('total'), // can either be a String or an Array ListenerField::make('Total Field', 'total_field') ->listensTo('total') // can either be a String or an Array ->calculateWith(function (Collection $values) { $subtotal = $values->get('sub_total'); $tax = $values->get('tax'); return $subtotal + $tax; }), BroadcasterField::make('Senior Discount', 'senior_discount') ->broadcastTo('discount'), // can either be a String or an Array BroadcasterField::make('Coupon Discount', 'coupon_amount') ->broadcastTo('discount'), // can either be a String or an Array ListenerField::make('Total Discount', 'total_discount') ->listensTo('discount') // can either be a String or an Array ->disableCalculationOnUpdate() // Only when to disable on Update forms ->calculateWith(function (Collection $values) { $seniorDiscount = $values->get('senior_discount'); $couponAmount = $values->get('coupon_amount'); return $seniorDiscount + $couponAmount; }) ]; } }