Po submitu formuláře prázdné hodnoty
- ptrfrc
- Člen | 4
Ahoj, úplně začínám s Nette, tak se omlouvám za tupý dotaz.. Mám následující problém:
<?php
public function createComponentInzeratForm(){
if (count($this->inzerat)==0){
$novy = true;
}
else
{
$novy = false;
}
$form = new BaseForm($this, 'inzeratForm');
if ($novy) {
$form->addText('inzeratid', 'Číslo inzeratu')->setDisabled(true);
}
else
{
$form->addText('inzeratiddisabled', 'Číslo inzeratu')->setDisabled(true)->setDefaultValue($this->inzerat['inzeratid']);
$form->addhidden('inzeratid');
}
$form->addText('nazev', 'Název')->addRule(Form::FILLED, 'Název musí být vyplněn.');
$form->setDefaults($this->inzerat);
$form->addSubmit('save', 'Uložit');
$form->onSubmit[] = callback($this,'inzeratFormSubmitted');
$form->onInvalidSubmit[] = callback($this, 'inzeratFormIvalidSubmitted');
RETURN $form;
}
?>
a
<?php
public function inzeratFormSubmitted($form){
$hodnotyzformu = $form->getValues();
Debug::dump($hodnotyzformu['inzeratid']);
if (empty ($hodnotyzformu['inzeratid'])){
unset($hodnotyzformu['inzeratid']);
}
try{
$inzeratid = $this->inzeratModelService->save($hodnotyzformu);
}
catch (DibiException $e) {
throw new RuntimeException($e);
}
}
?>
Pokud edituju záznam, otevře se formulář s naloadovanými hodnotami, kde je i položka inzeratiddisabled vyplněná, pokud ji vydumpuji ve funkci submit – vrací se mi NULL. Pokud vydumpuji inzeratid je také null. Zkoušel jsem to řešit i tím, že by políčko nebylo jako hidden ale jako text, správně se dotáhne číslo editovaného záznamu (inzeratid) ale z metody je vždycky NULL. zajímavé že všechny ostatní hodnoty z formuláře vydumpovat jdou a obsahují skutečně hodnoty zeditované ve formuláři. vůbec si s tím nevím rady. Díky
Editoval ptrfrc (13. 5. 2011 23:36)
- ptrfrc
- Člen | 4
Ano bylo, zkoušel jsem to ověřit tak, že jsem u toho popisku toho textového políčka ve větvi else přidal navíc nějaké písmena, takže jsem si jistý že to tím elsem jde. Ale prostě mi to tak dělá furt. Jakmile ve větvi then oddělám ten disable tak mi ta hodnota přijde, jinak ne. Je to strašně zapeklité, no vyřeším to nějak jinak. Ale dost sem se s tím natrápil :)
- Jur4
- Člen | 51
A je jisté, že se to dostane do else větve i při submitu (formulář se
vytváří znovu)? Podle mě se ti při submitu nenaplní proměnná
$this->inzerat
nebo se ti naplní jinak než při původním
renderu formuláře a nevleze ti to do else větve. Ta proměná by měla být
naplněná v action metodě.