FormContainer::setValues(), podpora pro vnořené potomky třídy FormContainer s přepsanou metodou setValues()
- honza.trtik
- Člen | 10
Demonstruju na příkladu: mám třídu DateTimeContainer potomka FormContainer, který obsahuje 2 formulářové pole (input pro datum a čas). Překrývám metodu setValues následujícím způsobem:
public function setValues($values, $erase = FALSE)
{
if (is_array($values))
{
return parent::setValues($values, $erase);
}
else
{
$dateTime = new DateTime53((string) $values);
$this->getDateInput()->setValue($dateTime->format('d.m.Y'));
$this->getTimeInput()->setValue($dateTime->format('H:i'));
return $this;
}
}
S tím, že naplnění formu by fungovalo jak z db (kde se datum ukládá
do jednoho datetime sloupce) tak z http requestu (v post datech dostaneme
array).
Bohužel implementace FormContainer::setValues() neodlišuje případ, kdy
potomek je opět instance FormContainer (metodu překrývá) a naplnění všech
vnořených IFormControl řeší sama…
- hrach
- Člen | 1838
jtousek: kdo videl nekdy cakephp, tak tusi … tam to bylo taky rozdeleny do vice vstupnich poli ;) proste tim resi datetimepicker ;)
- Filip Procházka
- Moderator | 4668
Poděď si Nette\Forms\FormControl
a né
Nette\Forms\FromContainer
, jde to snadno, jenom upravíš pár
metod :)
Editoval HosipLan (11. 2. 2011 8:33)