A server side calculated field for Laravel Nova
gldrenthe89/nova-calculated-field is a Laravel package for a server side calculated field for laravel nova.
It currently has 5 GitHub stars and 14.351 downloads on Packagist (latest version v2.4.1).
Install it with composer require gldrenthe89/nova-calculated-field.
Discover more Laravel packages by gldrenthe89
or browse all Laravel packages to compare alternatives.
Last updated
This packages is created after the package from codebykyle But after an extensive refactor and updating a lot of VueJS code to the latest Laravel Nova code I made this in to a new package.
[Release V2.3]
-- Fixed issue where you can't edit a listener field
-- Added Date Broadcaster field
-- Added Date Listener field
-- Added 'calculate' buttons to all visible Listener Fields
-- Added ability to turn of calculation on update forms.
[changes up to V2.2]
-- BelongsTo Broadcaster field
-- MorphTo Broadcaster field
-- Currency Listener Field
-- Hidden Listener Field
-- Code has been completely updated to latest Nova (2021-03-18)
Below pieces of the old Documentation from codebykyle I'm not really good at writing documentation. So please feel free to creat a PR for it.
Install the package via 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;
})
];
}
}