Nefunkční callback v továrničce
- RDPanek
- Člen | 189
Ahoj, mám továrničku, která mi vytváří formulář pro ukládání nových záznamů a editaci těch stávajících. Pokud ukládám nový záznam, je vše cajk, pokud chci uložit změněný záznam, stejně se použije callback pro ukládání – i když mám ošetřeno IF za jakých podmínek se má vzít ten či onen callback. Včem by mohla být chybka? :-)
<?php
public function createComponentPpzForm()
{
$form = new AppForm();
$form->addText('ppz_firstname', 'Křestní jméno*:')
->addRule(Form::FILLED, 'Uveďte křestní jméno.');
$form->addText('ppz_lastname', 'Příjmení*:')
->addRule(Form::FILLED, 'Uveďte příjmení');
$form->addText('ppz_email', 'Email*:')
->addRule(Form::EMAIL, 'Zadaný email nemá správný formát.');
$form->addSelect('ppz_status', 'Status', array('1'=>'Povolený vstup', '0'=>'Odepřený vstup'));
$form->addPassword('ppz_password', 'Heslo*:');
$form->addPassword('ppz_password2', 'Heslo znovu*:')
->addRule(Form::EQUAL, 'Zadané hesla se neshodují', $form['ppz_password']);
$form->addSubmit('cancel', 'Ukončit editor')
->setValidationScope(FALSE);
/*
* Pokud form bude v rezimu editace
*/
if(Environment::getHttpRequest()->getQuery('ppz-command') == "editPpz"){
$form->addSubmit('send', 'Uložit změny');
$form->onSubmit[] = callback($this, 'processUpdatePpz');
/*
* Naplneni poli
*/
$data = PpzModels::LoadPpzId(Environment::getHttpRequest()->getQuery('ppz-ppz_id'));
$form->setDefaults($data['0']);
/*
* V rezimu zadavani
*/
} else {
$form->addSubmit('send', 'Uložit');
$form->onSubmit[] = callback($this, 'processSaveNewPpz');
}
return $form;
}
?>
- RDPanek
- Člen | 189
Zajímavý, pokud kod doplnim o Debug::barDump:
<?php
/*
* Pokud form bude v rezimu editace
*/
if(Environment::getHttpRequest()->getQuery('ppz-command') == "editPpz"){
$form->addSubmit('send', 'Uložit změny');
$form->onSubmit[] = callback($this, 'processUpdatePpz');
/*
* Naplneni poli
*/
$data = PpzModels::LoadPpzId(Environment::getHttpRequest()->getQuery('ppz-ppz_id'));
$form->setDefaults($data['0']);
Debug::barDump("editace");
/*
* V rezimu zadavani
*/
} else {
$form->addSubmit('send', 'Uložit');
$form->onSubmit[] = callback($this, 'processSaveNewPpz');
Debug::barDump("ulozeni");
}
?>
Kliž natahuji form pro editaci, barDump vypíše „editace“, upravím nějakou položku a dám Uložit, tak barDump vypíše „ulozeni“ :-(
- melnenStig
- Člen | 8
mam problem s tim ze mi nefunguje callback v komponente, tu vytvarim nejak takto
<?php
public function createComponentAdminContent(){
return new AdminContent;
}
?>
AdminContent vypada nejak takto
<?php
class AdminContent extends NControl
{
public function render(Content $content){
$form = new NAppForm;
$form->addText('name');
$form->addTextArea('content');
$form->addSubmit('save', 'Uložit');
$form->addSubmit('delete', 'Smazat');
$form->addHidden('content_id', $content->content_id);
$form->setDefaults(array(
'name' => $content->name,
'content' => $content->content,
));
$form->onSuccess[] = callback($this, 'editFormSubmitted');
echo $form;
}
public function editFormSubmitted(NAppForm $form){
//toto se neprovede :/
$this->redirect('Homepge:Default');
}
}
?>
uz sem fakt zoufaly a nevim co s tim :/
NetteFramework-2.0beta-PHP5.2
nemeli by ste nejakou radu?
Editoval melnenStig (10. 7. 2011 14:35)
- melnenStig
- Člen | 8
tak reseni meho problemu jsem nasel zde https://forum.nette.org/…-zadnou-akci ale zase nejde redirect :D
- Jan Voráček
- Člen | 90
Gaudentius napsal(a):
Kliž natahuji form pro editaci, barDump vypíše „editace“, upravím nějakou položku a dám Uložit, tak barDump vypíše „ulozeni“ :-(
Protože po odeslání formuláře zmizí z query ‚ppz-ppz_id‘. Přeposílej si tu informaci ke zpracování třeba ve skrytym poli nebo jako persistentní parametr presenteru.
melnenStig napsal(a):
ale zase nejde redirect :D
Zkus použít $this->presenter->redirect();