MoonShine MoonShine
EN
← All plugins

Поле Decimal для Moonshine

Decimal Field for MoonShine
A versatile field for managing decimal numbers in MoonShine, supporting locale-based formatting, precision adjustments, and unit management with PHP-Intl integration.

Rating
Downloads
198
Version
2.0.0
Last updated
24.02.2025
MoonShine version
v2, v3
Github stars
11
forest-lynx
Author
forest-lynx

Поле Decimal для Moonshine

Latest Stable Version Total Downloads Software License
Laravel PHP PHP

Documentation in English

Поле для работы с десятичными числами в административной панели MoonShine. Наследуется от поля Text. При редактировании к полю применяется маска @money Alpine.js

Содержание

Установка

Команда для установки:

composer require forest-lynx/moonshine-decimal-field
composer require forest-lynx/moonshine-decimal-field

Использование

<?php
//...
use ForestLynx\MoonShine\Fields\Decimal;
//...
Decimal::make('Price', 'price');
<?php
//...
use ForestLynx\MoonShine\Fields\Decimal;
//...
Decimal::make('Price', 'price');

При формировании поля используется NumberFormatter php-intl. По умолчанию данные о локали берутся из настроек проекта, для ее переопределения используйте метод locale()

Методы

locale(string $locale):

  • $locale - принимает строку с локалью, например: 'ru_RU' или 'ru'.

precision(int $precision, ?bool $isNaturalNumber):

  • $precision принимает число, количество знаков дробной части.
  • $isNaturalNumber Не обязательный параметр, по умолчанию false. Отвечает за обработку натуральных чисел, например если у вас в базе данных значения хранятся в виде целых чисел. naturalNumber(?int $precision = 2)
  • $precision принимает число, количество знаков дробной части, по умолчанию 2.

Пример с натуральным числом, значение поля в базе данных = 12564. Предположим, что с учетом Ваших потребностей оно должно трансформироваться в 125.64:

<?php
use ForestLynx\MoonShine\Fields\Decimal;
//...
Decimal::make('Sum', 'sum')
->precision(2, true);
//or
Decimal::make('Sum', 'sum')
->naturalNumber();
//...
<?php
use ForestLynx\MoonShine\Fields\Decimal;
//...
Decimal::make('Sum', 'sum')
->precision(2, true);
//or
Decimal::make('Sum', 'sum')
->naturalNumber();
//...

Значения $precision в методах precision(),naturalNumber() перезаписывает данные о количестве знаков дробной части, ранее определенных указанными методами. Например:

<?php
use ForestLynx\MoonShine\Fields\Decimal;
//...
Decimal::make('Sum', 'sum')
->precision(3)
->naturalNumber(4);
//...
<?php
use ForestLynx\MoonShine\Fields\Decimal;
//...
Decimal::make('Sum', 'sum')
->precision(3)
->naturalNumber(4);
//...

Данный код переопределит значение количества знаков после запятой на 4.

При работе с натуральными числами, со значением поля полученным из request перед сохранением происходит обратная трансформация.

Единицы измерения

Для указания поля, где хранятся единицы измерения:

Методы

unit(string $unit, string|array $data):

  • $unit - название колонки в базе данных.
  • $data - массив с данными, или название класса перечисления с данными о единицах измерения.

unitDefault(mixed $default):

  • $default - значение по умолчанию для поля.

Примеры использования:

<?php
use ForestLynx\MoonShine\Fields\Decimal;
//...
Decimal::make('Price', 'price')
->unit('unit', ['килограмм.', 'литр'])
->unitDefault(0);
//or
Decimal::make('Price', 'price')
->unit('unit', [0 => 'килограмм.', 1 => 'литр'])
->unitDefault(1);
//or
Decimal::make('Price', 'price')
->unit('unit', UnitEnum::class)
->unitDefault(UnitEnum::KILOGRAM);
//...
<?php
use ForestLynx\MoonShine\Fields\Decimal;
//...
Decimal::make('Price', 'price')
->unit('unit', ['килограмм.', 'литр'])
->unitDefault(0);
//or
Decimal::make('Price', 'price')
->unit('unit', [0 => 'килограмм.', 1 => 'литр'])
->unitDefault(1);
//or
Decimal::make('Price', 'price')
->unit('unit', UnitEnum::class)
->unitDefault(UnitEnum::KILOGRAM);
//...

Как это выглядит в административной панели:

Просмотр Редактирование
preview edit

Лицензия

Лицензия MIT.