Nezobrazujici se datum pri editaci
- TheNEoo
- Člen | 75
Zdravím.
Verze nette 2.0 stable
Php 5.3 s namespace
Ze záhadného důvodu se mi nenačtou hodnoty datumu do formuláře při editaci. Ale vše funguje, když vyplním datum v akci add tak je v db ulozen. To samé se děje i při editu, ale nevyplní se mi v editu polička s datumama. Naprosto nechápu, z jakého důvodu.
Pokud přes var_dump zobrazím co dotaz obsahuje při zavolání editu, tak obsahuje datum, ale prostě se v editu nevyplní, jinak vše ostatní se vyplní.
[„datum_schvaleni“]⇒ object(Nette\DateTime)#202 (3) { [„date“]⇒ string(19) „2012–03–31 00:00:00“ [„timezone_type“]⇒ int(3) [„timezone“]⇒ string(13) „Europe/Prague“ }
edit.latte
...
<tr><td>{label datum_schvaleni /}</td><td>{input datum_schvaleni}</td></tr>
<tr><td>{label datum_ukonceni /}</td><td>{input datum_ukonceni}</td></tr>
...
Dystak jak vypada akce Edit
public function renderEdit($id = 0) {
$this['klientForm']['save']->caption = 'Upravit klienta';
$form = $this['klientForm'];
if (!$form->isSubmitted()) {
var_dump($row = $this->context->createklient()->get($id));
if (!$row) {
$this->error('Klient nebyl nalezen.');
}
$form->setDefaults($row);
}
}
//A pro jistotu uvadim i form
protected function createComponentKlientForm() {
$cislo = $this->context->createKlient()->order('klient_cislo')->count('klient_cislo');
$form = new Form;
$form->addText('klient_cislo', 'Číslo klienta: ')->setDefaultValue(++$cislo);
$form->addText('klient_titul', 'Titul: ');
$form->addText('jmeno', 'Jméno: ')->setRequired('Zadejte prosím jméno');
$form->addText('prijmeni', 'Příjmení: ')->setRequired('Zadejte prosím příjmení');
$form->addText('klient_telefon', 'Telefon: ')
->addRule(Form::INTEGER, 'Pole telefon musí být čísla')
->setRequired('Zadejte prosím Telefon');
$form->addText('email', 'Email: ')->setDefaultValue("@")->setRequired('Zadejte prosím email');
$form->addText('klient_mesto', 'Město: ')->setRequired('Zadejte prosím město');
$form->addText('klient_ulice', 'Ulice: ')->setRequired('Zadejte prosím ulici');
$form->addText('klient_psc', 'Psč: ')->setRequired('Zadejte prosím psc');
$form->addText('klient_firma', 'Firma: ');
$form->addText('klient_firma_ico', 'Ič: ');
$form->addText('klient_firma_dic', 'Dič: ');
$form->addText('klient_platba', 'Platba: ')->setRequired('Zadejte prosím platbu');
$form->addText('klient_tarif', 'Tarif(Mbps): ');
$form->addText('datum_schvaleni', 'Datum schválení: ');
$form->addText('datum_ukonceni', 'Datum ukončení: ');
$form->addHidden('datum_pridani');
$form->addText('klient_ip', 'IP adresa: ')->setRequired('Zadejte prosím ip adresu');
$form->addText('klient_verejna_ip', 'Veřejná IP: ')->setDefaultValue("0.0.0.0");
$form->addText('klient_mac_adresa', 'MAC adresa: ')->setDefaultValue("00:00:00:00:00:00");
$form->addText('username', 'Uživatelské jméno: ');
$form->addTextArea('klient_poznamka', 'Poznámka: ');
$form->addSubmit('save', 'Přidat klienta')->setAttribute('class', 'default');
$form->addSubmit('cancel', 'Zrušit')->setValidationScope(NULL);
$form->onSuccess[] = callback($this, 'klientFormSubmitted');
$form->addProtection('Prosím odešlete formulář znova (Ochránný token expiroval).');
return $form;
}
Editoval TheNEoo (17. 3. 2012 23:17)
- mochja
- Člen | 20
„Chyba“ je pravdepodobne na strane Nette
class test {
public function __toString() {
return 'test';
}
}
public function createComponentMyForm() {
$form = new \Nette\Application\UI\Form;
$test = new test;
$form->addText('test', 'test:')->setDefaultValue((string) $test); // test
$form->addText('test1', 'test1:')->setDefaultValue($test); // clean
return $form;
}
Tvoj problém by mohol taktiež vyriešiť napr. https://componette.org/search/?…
Editoval mochja (18. 3. 2012 0:00)
- David Grudl
- Nette Core | 8228
Nejsem si úplně jist, jestli je vhodnější automaticky převádět objekty na string nebo reagovat vyhozením výjimky…