---
title: "Validácia, requesty a kolekcie — Money for Laravel | Roundly"
description: "Validujte sumy a kódy mien, čítajte peniaze z requestu bez floatov, agregujte kolekcie a vracajte JSON resource."
url: https://roundly-consulting.com/sk/open-source/navody/money-for-laravel/validacia-a-requesty
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Money for Laravel](https://roundly-consulting.com/sk/open-source/navody/money-for-laravel.md)

# Validácia, requesty a kolekcie

Peňažný vstup validujte objektmi pravidiel alebo textovými pravidlami:

```php
use RoundlyConsulting\Money\Rules\CurrencyCode;
use RoundlyConsulting\Money\Rules\MoneyAmount;

$request->validate([
    'price'    => ['required', MoneyAmount::in('EUR')->positive()->max('99999.99')],
    'fee'      => [MoneyAmount::inCurrencyFrom('currency')->allowNegative()],
    'amount'   => [MoneyAmount::in('EUR')->localized('sk')],      // accepts "1 234,50"
    'currency' => ['required', (new CurrencyCode)->isoOnly()],
    'payout'   => ['required', new CurrencyCode(['EUR', 'CZK'])],
    'legacy'   => 'money_amount:EUR',
    'code'     => 'currency_code:EUR,CZK',
]);
```

- MoneyAmount::in($currency) alebo MoneyAmount::inCurrencyFrom($field) — pevná mena alebo mena zo susedného poľa (obmedzená cez currencies.allowed).
- min() / max() — inty a desatinné reťazce sú celé jednotky; hranica jemnejšia ako mena sa zaokrúhli smerom dovnútra.
- positive() vyžaduje viac ako nulu; allowNegative() zruší predvolenú kontrolu nezápornosti.
- localized(?$locale) — prijme lokalizovaný vstup ako „1 234,50“ cez parser.
- new CurrencyCode(?$allowed) — registrovaný kód obmedzený na $allowed alebo currencies.allowed; ->isoOnly() odmietne vlastné meny.
- Textové pravidlá: currency\_code, currency\_code:EUR,CZK a money\_amount:EUR (bez parametra predvolená mena).

Hlášky sú v money::validation.\* — amount, precision, too\_large, negative, positive, min, max a currency — v angličtine a slovenčine. Upraviť ich môžete po publikovaní money-translations.

## Čítanie sumy z requestu

```php
$price = $request->money('price', 'EUR');              // JSON 1.1 → 1.10 EUR, not 1.11
$fee   = $request->money('fee', currencyKey: 'currency'); // currency from another input
$tip   = $request->money('tip');                       // money.default_currency; null when blank
```

- Chýbajúci alebo prázdny vstup vráti null.
- Int znamená celé jednotky; JSON float sa zmení na najkratší desatinný zápis, ktorý float presne vystihuje, takže 1.1 je 110 centov, nie 111.
- Mena sa berie z argumentu, potom zo vstupu v currencyKey a nakoniec z money.default\_currency.
- Sumy nad 2⁵³ posielajte ako JSON reťazce a vopred ich overte cez MoneyAmount.

## Kolekcie

```php
$order->items->sumMoney(
    fn ($item) => $item->price->multiply($item->quantity),
    currencyIfEmpty: 'EUR',
);

$prices->minMoney();              // the items are Money
$products->maxMoney('price');     // a key or property path
$products->avgMoney('price');     // rounds once with money.rounding
```

sumMoney, minMoney, maxMoney a avgMoney fungujú na Collection aj LazyCollection (Eloquent kolekcie ich dedia). Hodnota je null (položky sú Money), kľúč či cesta k vlastnosti alebo callback. Prázdne kolekcie sa správajú ako Money::sum/min/max/average.

## API resource

```php
use RoundlyConsulting\Money\Http\Resources\MoneyResource;

return ['price' => MoneyResource::from($product->price)];
// {"minor":"1050","decimal":"10.50","currency":"USD","exponent":2,"formatted":"$10.50"}
```

MoneyResource::from() vráti pre null hodnotu null. Pole formatted používa zaregistrovaný formátovač v lokalite aplikácie a slúži len na zobrazenie — klienti by mali počítať s minor.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/money-for-laravel.md)
