Formuláře
DateTimePicker
Jednotný date/time picker s režimy date, month, time a datetime.
Na této stránce
Jednotný date/time picker s režimy date, month, time a datetime.
use NyonCode\WireForms\Components\DateTimePicker;
Režimy
// Jen datumDateTimePicker::make('birth_date')->asDate() // DateTime (výchozí)DateTimePicker::make('event_at')DateTimePicker::make('event_at')->asDateTime() // Jen časDateTimePicker::make('alarm')->asTime() // Jen měsíc + rok („YYYY-MM")DateTimePicker::make('period')->asMonth() // Explicitní setter režimuDateTimePicker::make('x')->mode('date') // 'date', 'month', 'time', 'datetime'
asMonth()vždy renderuje nativní<input type="month">prohlížeče — vlastní kalendář nemá month-only mřížku — takže zůstane nativní i když předáš->native(false).
Omezení data
DateTimePicker::make('start') ->minDate('2024-01-01') ->maxDate('2025-12-31') ->disabledDates(['2024-12-25', '2024-12-31']) ->firstDayOfWeek(1) // pondělí ->closeOnDateSelection()
Meze přijmou cokoli, co jde přečíst jako datum — Carbon/DateTimeInterface,
nebo řetězec jako '2026-07-10', '10.07.2026', 'today' či '+1 week' — a na
pozadí se převedou do tvaru, kterému widget rozumí. Mez, kterou přečíst nelze,
vyhodí výjimku, místo aby ji prohlížeč tiše zahodil.
DateTimePicker::make('start') ->minDate(now()) // žádná data v minulosti ->maxDate(now()->addYear())
U režimu datetime může mez nést i čas — ten pak omezí hodiny jen v ten hraniční
den:
DateTimePicker::make('slot') ->minDate('2026-07-10 08:30') // 10. července nejdřív od 08:30 ->maxDate('2026-07-20 17:00') // 20. července nejpozději do 17:00
Horní mez zadaná na celý den pokrývá celý den: ->maxDate('2026-07-20')
nechá 20. července volitelné až do 23:59.
Volby času
DateTimePicker::make('meeting') ->withSeconds() ->hoursStep(1) ->minutesStep(15) ->secondsStep(30)
Formát
DateTimePicker::make('date') ->format('Y-m-d') // formát uložení ->displayFormat('d.m.Y') // formát zobrazení ->timezone('Europe/Prague')
format()atimezone()jsou opt-in a uplatní se při uložení. Bez nich se hodnota uloží přesně tak, jak ji vyrobil widget — přidání na existující field je tedy vědomá změna toho, co skončí ve sloupci, nikdy tichá.timezone()převádí oběma směry a jen udatetime: samotné datum nebo čas jsou wall-clock hodnoty, které by převod poškodil.
displayFormat()používá tokeny PHPdate()a mění jen to, co vidí uživatel — uložená hodnota zůstává beze změny. Ctí ho vlastní picker; formát zobrazení nativního inputu patří prohlížeči a locale uživatele.
Nativní picker
Výchozí je vlastní Alpine picker. Přepnutí na ovládání prohlížeče:
DateTimePicker::make('date') ->native() // použít nativní picker prohlížeče ->native(false) // zpět na vlastní picker (výchozí)
Jedinou výjimkou je asMonth(), který je vždy nativní.
Metody
| Metoda | Typ | Popis |
|---|---|---|
mode(string) |
string | Nastavit režim: date, month, time, datetime |
asDate() |
— | Alias pro mode('date') |
asTime() |
— | Alias pro mode('time') |
asMonth() |
— | Alias pro mode('month'); vždy nativní |
asDateTime() |
— | Alias pro mode('datetime') |
format(string) |
string | Formát uložení (Carbon kompatibilní) |
displayFormat(string) |
string | Formát zobrazení ukázaný uživateli |
minDate(string|DateTimeInterface|Closure) |
string | Nejdřívější volitelné datum; u datetime může nést i čas |
maxDate(string|DateTimeInterface|Closure) |
string | Nejpozdější volitelné datum; mez na celý den pokrývá celý den |
disabledDates(array|Closure) |
array | Data, která nelze vybrat |
firstDayOfWeek(int) |
int | 0=neděle, 1=pondělí |
closeOnDateSelection() |
bool | Zavřít picker po výběru data |
withSeconds() |
bool | Zobrazit sloupec sekund v time pickeru |
hoursStep(int) |
int | Krok inkrementu hodin |
minutesStep(int) |
int | Krok inkrementu minut |
secondsStep(int) |
int | Krok inkrementu sekund |
timezone(string) |
string | Zobrazí hodnotu v této timezone a při uložení ji převede zpět do timezone aplikace; jen pro datetime |
native(bool $native = true) |
bool | Použít nativní ovládání prohlížeče místo vlastního pickeru (výchozí: false) |
disabled(bool|Closure) |
bool | Znepřístupnit picker |
readOnly(bool|Closure) |
bool | Read-only režim |
required() |
— | Označit jako povinné |
live() |
— | Spustit Livewire update při změně |
Label, hint, tooltip a další sdílené metody viz Společné API pole.