metóda na pridanie informatívneho riadku v SelectBox-e
- mlady
- Člen | 24
Zdravím.
Napadlo mi, že by sa zišla metóda, ktorou by bolo možné pridať „info“
riadok v SelectBoxe. Momentálne, keď získam dáta z databázy tak, to
musím riešiť napr. takto:
<?php
$items = $model->getPairs();
$form->addSelect('user', 'Používateľ', array_merge(array('?' => '---'), $items))
->skipFirst(TRUE);
?>
Myslím, že šikovnejšie by to bolo napr. takto:
<?php
$items = $model->getPairs();
$form->addSelect('user', 'Používateľ', $items))
->setFirst('?', '---')
->skipFirst(TRUE);
?>
Čo myslíte?
- jasir
- Člen | 746
mlady napsal(a):
PetrP napsal(a):
Nebo by to mohla přijímat metoda skipFirst
$form->skipFirst(array('?', '---'));
Myslím, že by to síce bolo kratšie ale trocha mätúce. Vo mne tento zápis na prvý pohľad evokuje skôr to, že ignorovať sa budú riadky ‚?‘ a ‚---‘.
On kolega PetrP spíše myslel
<?php
$form->skipFirst(array('?' => '---'));
?>
Mě to přijde jako dobrý nápad, je fakt, že teď s tím
array_merge
je to méně intuitivní.
Editoval jasir (18. 6. 2009 10:31)
- vlki
- Člen | 218
Jen poznamenám, že array_merge
může zajistit těžce
zjistitelné chyby, když ho použijete např. takto:
// data z db
$items = array(
3 => 'item1',
5 => 'item2',
9 => 'item3',
);
$items = array_merge(array('' => '---'), $items);
Číselné klíče pole to přečísluje tak, že nultý bude ‚---‘,
první ‚item1‘, atd.
(Pokud se použije jako klíč otazník, tak problém padá, ale ne vždy je
chtěný.)
Řešením je nepoužít array_merge
, ale jednoduché sloučení
polí, které přečíslování nedělá.
$items = array('' => '---') + $items;
Sám jsem nad tím strávil nemálo času, tak ať se tím nespálí i někdo jiný…
Taková feature u skipFirst
by to určitě zpřehlednila a
takovýmto wtf věcem zabránila.
- piler
- Člen | 111
jasir napsal(a):
mlady napsal(a):
PetrP napsal(a):
Nebo by to mohla přijímat metoda skipFirst
$form->skipFirst(array('?', '---'));
Myslím, že by to síce bolo kratšie ale trocha mätúce. Vo mne tento zápis na prvý pohľad evokuje skôr to, že ignorovať sa budú riadky ‚?‘ a ‚---‘.
On kolega PetrP spíše myslel
<?php $form->skipFirst(array('?' => '---')); ?>
Mě to přijde jako dobrý nápad, je fakt, že teď s tím
array_merge
je to méně intuitivní.
Dobry napad je to v tom, ze je moznost vymenovat zoznam items, ktore sa nemaju brat do uvahy pri Form::FILLED, ale nazov skipFirst() uz nie je to „spravne orechove“…
- PetrP
- Člen | 587
jasir napsal(a):
On kolega PetrP spíše myslel …
Tak tak díky ;]
Mě na tom první návrhu od mlady
se nelíbylo nutnost to
defakto nastavovat dvakrát:
->setFirst('?', '---')
->skipFirst(TRUE);
// To samé i u momentalního řešení
$items = array('?' => '---') + $items;
->skipFirst(TRUE);
// Proto buď
->skipFirst(array('?' => '---'));
// nebo možná lépe pojmenované
->setFirst(array('?' => '---')); //které by ale zároveň nastavovalo skipFirst na true;