codebykyle/calculated-field
最新稳定版本:1.1
Composer 安装命令:
composer require codebykyle/calculated-field
包简介
A server side calculated field for Laravel Nova
README 文档
README
This package contains two Nova fields required to do server-side calculations from the Nova client. The user can optionally override the calculated value on the form.
For a detailed write-up of the how-and-why of this field, please visit:
https://codebykyle.com/blog/laravel-nova-custom-calculated-field
Installation
Install the package via composer:
composer require codebykyle/calculated-field
Example
For example:
As a number
As a string:
Default
The Listener field will by default sum all numbers passed to it
Usage
<?php use Codebykyle\CalculatedField\BroadcasterField; use Codebykyle\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') ]; } }
Overriding the Callback
<?php use Codebykyle\CalculatedField\BroadcasterField; use Codebykyle\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; }), ]; } }
String Fields
<?php use Codebykyle\CalculatedField\BroadcasterField; use Codebykyle\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(' '); }), ]; } }
Multiple Calculated Fields
<?php use Codebykyle\CalculatedField\BroadcasterField; use Codebykyle\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; }) ]; } }
统计信息
- 总下载量: 78.43k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 45
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-08-12