obsluzne handlery zo sticky
- edke
- Člen | 198
Z vlakna Best practice: Formulářová tlačítka a prikladu s obsluhou:
$form->addSubmit('ok', 'Send')
->onClick[] = 'OkClicked'; // nebo 'OkClickHandler'
$form->addSubmit('cancel', 'Cancel')
->setValidationScope(FALSE)
->onClick[] = 'CancelClicked'; // nebo 'CancelClickHandler'
// obslužné handlery:
function OkClicked(SubmitButton $button)
{
// submitted and valid
save($form->getValues());
redirect(...);
}
function CancelClicked(SubmitButton $button)
{
// process cancelled
redirect(...);
}
1: ako sa v obsluznom handleri OkClicked
dostanem k instancii
$form a tym aj k hodnotami zo submitnuteho formulara ?
2a: oba handlery v tom priklade su funkcie v ramci metody Presenteru
zobrazujucej formular?
2b: alebo su to rovnako metody Presenteru ?
- David Grudl
- Nette Core | 8218
edke napsal(a):
1: ako sa v obsluznom handleri
OkClicked
dostanem k instancii $form a tym aj k hodnotami zo submitnuteho formulara ?
přes $button->getForm();
2a: oba handlery v tom priklade su funkcie v ramci metody Presenteru zobrazujucej formular?
2b: alebo su to rovnako metody Presenteru ?
jsou to obyčejné funkce. Metody je potřeba zapsat např. takto:
...->onClick[] = array($this, 'OkClicked');
- edke
- Člen | 198
David Grudl wrote:
přes $button->getForm();
Och, tusil som ze take nieco tam bude :) Tusim musim castejsie pouzivat
var_dump( get_class_methods($button) );
aby som neotravoval s trivialnymi vecami :)
jsou to obyčejné funkce. Metody je potřeba zapsat např. takto:
...->onClick[] = array($this, 'OkClicked');
Nie je funkcia v ramci metody trosku „prasarna“ ? Nie je to takto cistejsie ?
public function actionForm( $id = 0 ) {
$form = new AppForm($this, 'form');
...
$form->addSubmit('apply', $id > 0 ? 'Upraviť' : 'Pridať' )
->onClick[] = array( $this, 'form_onApply');
$form->addSubmit('cancel', 'Cancel')
->setValidationScope(FALSE)
->onClick[] = array( $this, 'form_onCancel');
...
public function form_onApply( SubmitButton $button )
{
$model= new $this->tableName;
$id = (int) $this->getParam('id');
$values= $button->getForm()->getValues();
$values['password']= md5($values['password']);
unset( $values['password2']);
if ( empty($values['password']) ) {
unset( $values['password']);
}
if ($id > 0) {
$model->update($id, $values);
} else {
$model->insert($values);
}
//TODO user message
$this->redirect('default');
}
public function form_onCancel( SubmitButton $button )
{
//TODO overenie zmeneneho formulara
//TODO user message
$this->redirect('default');
}
- David Grudl
- Nette Core | 8218
edke napsal(a):
Och, tusil som ze take nieco tam bude :) Tusim musim castejsie pouzivat
Doporučuju API referenci
Nie je funkcia v ramci metody trosku „prasarna“ ? Nie je to takto cistejsie ?
Určitě je. Ani k takovému kombinování nenabádám. Odkazovaný příklad funguje jen jako ukázka použití, není tam nikde řečeno, že jde o kód v rámci metody.
- edke
- Člen | 198
David Grudl wrote:
Doporučuju API referenci
Ked uz sme pri tom API, je vzdy s kazdym revision aktualizovane ako to webove, tak to na stiahnutie ?