Znovupoužití formu add/edit
- Dj_Oggy
- Člen | 67
Zdravim, vim, ze to tady bylo uz tak nejak resene, ale narazil jsem na problem.
Mam udelanou tovarnicku, ve ktere si vytvarim formular pri pridavani do databaze. Ten samy formular chci pouzit pro editaci. Jeho naplneni daty mi funguje, ale co mi nefunguje je prejmenovani nazvu tlacitka pro odeslani a zmena handleru po kliknuti.
public function actionEdit($id)
{
$this->setView('add');
$form = $this->getComponent('addactionform');
$actionData = ActionsModel::getActionById($id, Environment::getUser()->getIdentity()->getName());
if ($actionData == FALSE)
$this->rediret("Actions:badid");
$form->setDefaults(array('actionname' => $actionData['actionname'],
'actiondesc' => $actionData['description'],
'datumod' => date("d.m.YYYY", $actionData['datestart']),
'datumdo' => date("d.m.YYYY", $actionData['dateend']),
'kraj' => $actionData['kraj'],
));
$form->onSubmit[] = array($this, 'EditovatClicked');
}
public function EditovatClicked()
{
}
Mam tam nekde chybu v tom prirazovani toho submitu, ze se mi
nepreregistruje?
A na zmenu nazvu tlacitka se mi nepodarilo prijit.
Diky za rady.
- vlki
- Člen | 218
A není lepší si ten formulář nejdřív předpřipravit v továrničce a pak „doladit“ v action? Tzn. přidat až tam callback pro zpracování a tlačítko?
Pokud jde ale o ty změny, měly by být obě proveditelné.
Přejmenování textu tlačítka:
$form->addSubmit('save', 'Uložit');
$form['save']->caption = 'Přidat'; // změní text na tlačítku
Změna callbacku:
$form->onSubmit[] = array($this, 'AddClicked'); // nějaké výchozí nastavení
$form->onSubmit = array(array($this, 'EditClicked')); // nové nastavení
Atributy on<something> jsou vždycky pole callbacků, takže se s nimi i jako s klasickými poli pracuje.
Editoval vlki (3. 9. 2009 23:51)
- Dj_Oggy
- Člen | 67
2 vlki: Dik, to je presne ono, co potrebuju. U toho submitu jsem si rikal,
ze mi nejak nesedi pouziti tech zavorek.
BTW: mozna v tomhle pripade by bylo lepsi dodelavat to tlacitko az v action,
ale co kdyz potrebujes treba zmenit tlacitko nekde uprostred formulare? To uz ho
pak doprostred nejak nepridas.
2 cifro: Co presne te zajima? Jak udelat tovarnicku nebo neco jinaciho?
EDIT:
Nejak mi nefungovalo to preprirazeni toho tlacitka a nakonec jsem ho vyresil
2 zpusoby:
$form['tlacitko']->onClick = array(array($this, 'EditovatClicked'));
nebo
$form['tlacitko']->onClick[0] = array($this, 'EditovatClicked');
Editoval Dj_Oggy (4. 9. 2009 10:29)
- Dj_Oggy
- Člen | 67
Jo aha, tak normalne si tvorim form v tovarnicce a pak, kdyz ho chci
editovat, tak mam akci edit (actionEdit($id)
) a v nem toto:
$this->setView('add');
$form = $this->getComponent('addactionform');
$actionData = ActionsModel::getActionById($id, Environment::getUser()->getIdentity()->getName());
if ($actionData == FALSE)
$this->rediret("Actions:badid");
$form->addHidden("actionid")->setValue($id);
$form->setDefaults(array('actionname' => $actionData['actionname'],
'actiondesc' => $actionData['description'],
'datumod' => date("d.m.Y", $actionData['datestart']),
'datumdo' => date("d.m.Y", $actionData['dateend']),
'casod' => date("H:i", $actionData['datestart']),
'casdo' => date("H:i", $actionData['dateend']),
'kraj' => $actionData['kraj'],
));
$form['tlacitko']->caption = "Uložit";
$form['tlacitko']->onClick = array(array($this, 'EditovatClicked'));