NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Opening Hours for Laravel

Validácia a HTTP vstup

Vstup z formulára alebo API zvalidujte pravidlom ValidOpeningHours a zvalidované pole odovzdajte priamo do OpeningHours::sync():

use RoundlyConsulting\OpeningHours\Facades\OpeningHours;
use RoundlyConsulting\OpeningHours\Rules\ValidOpeningHours;
use RoundlyConsulting\OpeningHours\Rules\ValidTimeRange;

public function rules(): array
{
    return [
        'opening_hours' => ['required', 'array', new ValidOpeningHours(requireTimezone: true)],
        'range' => [new ValidTimeRange],
    ];
}

OpeningHours::sync(
    $clinic,
    $request->validated('opening_hours'),
    expectedRevision: $request->filled('revision') ? $request->integer('revision') : null,
);

Každý problém sa hlási pod svojím vnoreným kľúčom (opening_hours.schedules.0.week.monday.1) s preloženou správou: neplatné časy, prázdne rozsahy, prekryvy (aj cez polnoc a z nedele do pondelka), dva základné rozvrhy, nejednoznačné sezónne okná či výnimky, neznáme dni, neplatné časové pásma a prekročené limity. new ValidOpeningHours(mergeOverlapping: true) prekryvy zlúči namiesto odmietnutia; requireTimezone: true urobí časové pásmo povinným. ValidTimeRange validuje jeden rozsah.

Validácia v kóde

Fasáda validuje bez zápisu; CalendarData::fromArray() vyhodí InvalidOpeningHoursException so všetkými porušeniami:

use RoundlyConsulting\OpeningHours\DataTransferObjects\CalendarData;
use RoundlyConsulting\OpeningHours\Exceptions\InvalidOpeningHoursException;
use RoundlyConsulting\OpeningHours\Facades\OpeningHours;

$violations = OpeningHours::validate($payload);   // ViolationList, nothing is written
$violations->isEmpty();
$violations->first()?->message();
$violations->toMessageBag('opening_hours');

try {
    $data = CalendarData::fromArray($payload);
} catch (InvalidOpeningHoursException $e) {
    return back()->withErrors($e->violations()->toMessageBag('opening_hours'));
}

Kódy porušení

Každé porušenie nesie ViolationCode; jeho správa pochádza z opening-hours::validation.<code> v angličtine a slovenčine: invalid_structure, invalid_time, empty_range, start_at_24, overlap, invalid_date, invalid_month_day, window_inverted, recurrence_mismatch, yearly_window_unbounded, duplicate_base_schedule, ambiguous_schedule_window, duplicate_exception, ambiguous_exception, invalid_timezone, timezone_required, invalid_calendar_key, unknown_weekday, invalid_priority, invalid_capacity, limit_exceeded, label_too_long, meta_too_large, unknown_id, duplicate_id a unsupported_week_array_feature.

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

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

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.