Jak řešíte editování údajů?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- VaKvas
- Začátečník | 111
napriklad takto :
$form->onSuccess[] = callback($this, 'formSubmitted'); // odeslani formu
if ($this->action === 'edit') {
$data_z_db= $this->model->getData($this->getParam('id')); // podle ID napriklad
if (!$data) {
throw new Nette\Application\BadRequestException;
}
$form->setDefaults($data->toArray());
}
- kravčo
- Člen | 721
Ja teda presnejšie používam onClick, ale rozdiel je minimálny:
// továrnička v prezenteri
function createComponentForm($name)
{
// pokial vytvaram, param id je NULL
$this->getModel()->getForm($this->getParam('id'));
}
// továrnička v modeli
function getForm($id)
{
$form = new Nette\Application\UI\Form;
$form->addText('text', 'Text článku');
$form->addSubmit('save', 'Uložiť');
if ($id) {
// editing
$data = $this->getData($id);
$form->setDefaultValues($data);
$form['save']->onClick[] = function() { /* update data */ };
} else {
// creating
$form['save']->onClick[] = function() { /* insert data */ };
}
return $form;
}
- 22
- Člen | 1478
já teda úplně jinak:
protected function createComponentForm($name)
{
$form = new Nette\Application\UI\Form($this, $name);
$form->addText('text', 'Text článku');
$form->addSubmit('save', 'Uložiť')
->onClick[] = callback($this, 'ok');
return $form;
}
public function ok(SubmitButton $form)
{
if($this->action === 'default'){
...save atd..
}
public function actionDefault()
{
}
public function actionEdit($id)
{
$data = $this->getModel()->getForm($id);
$this['form']->setDefaults($data);
}