scops / calculated-field
Laravel Nova的服务端计算字段
dev-master
2021-10-21 06:16 UTC
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-09-21 12:24:33 UTC
README
此包包含两个Nova字段,用于从Nova客户端进行服务器端计算。用户可以选择在表单中覆盖计算值。
有关此字段的详细说明,请访问原作者的网站:
https://codebykyle.com/blog/laravel-nova-custom-calculated-field
安装
使用composer安装此包
composer require scops/calculated-field
示例
例如
作为数字
作为字符串
默认
默认情况下,Listener字段将对其传入的所有数字求和
用法
<?php use Scops\CalculatedField\BroadcasterField; use Scops\CalculatedField\ListenerField; class MyResource extends Resource { public function fields(Request $request) { return [ BroadcasterField::make('Sub Total', 'sub_total'), BroadcasterField::make('Tax', 'tax'), ListenerField::make('Total Field', 'total_field') ]; } }
覆盖回调
<?php use Scops\CalculatedField\BroadcasterField; use Scops\CalculatedField\ListenerField; class MyResource extends Resource { public function fields(Request $request) { return [ BroadcasterField::make('Sub Total', 'sub_total'), BroadcasterField::make('Tax', 'tax'), ListenerField::make('Total Field', 'total_field') ->calculateWith(function (Collection $values) { $subtotal = $values->get('sub_total'); $tax = $values->get('tax'); return $subtotal + $tax; }), ]; } }
字符串字段
<?php use Scops\CalculatedField\BroadcasterField; use Scops\CalculatedField\ListenerField; class MyResource extends Resource { public function fields(Request $request) { return [ BroadcasterField::make('First Name', 'first_name') ->setType('string'), BroadcasterField::make('Last Name', 'last_name') ->setType('string'), ListenerField::make('Full Name', 'full_name') ->calculateWith(function (Collection $values) { return $values->values()->join(' '); }), ]; } }
多个计算字段
<?php use Scops\CalculatedField\BroadcasterField; use Scops\CalculatedField\ListenerField; class MyResource extends Resource { public function fields(Request $request) { return [ BroadcasterField::make('Sub Total', 'sub_total') ->broadcastTo('total'), BroadcasterField::make('Tax', 'tax') ->broadcastTo('total'), ListenerField::make('Total Field', 'total_field') ->listensTo('total') ->calculateWith(function (Collection $values) { $subtotal = $values->get('sub_total'); $tax = $values->get('tax'); return $subtotal + $tax; }), BroadcasterField::make('Senior Discount', 'senior_discount') ->broadcastTo('discount'), BroadcasterField::make('Coupon Discount', 'coupon_amount') ->broadcastTo('discount'), ListenerField::make('Total Discount', 'total_discount') ->listensTo('discount') ->calculateWith(function (Collection $values) { $seniorDiscount = $values->get('senior_discount'); $couponAmount = $values->get('coupon_amount'); return $seniorDiscount + $couponAmount; }) ]; } }