[Best practice] Hodnoty ->setDefaults()
- Tomáš Votruba
- Moderator | 1114
Jak nastavit setDefaults
nejlépe, aby se po odeslání
nevzikala chyba s chybějící hodnotout? Ukážu na kódu:
// formulář pro editaci
protected function createComponentRecordForm()
{
$form = new Form;
$id = $this->getParam("id"); // číslo záznamu
$defaults = $this->models->myModel->getRecord($id); // hodnoty našeho záznamu
$form->addText(...);
// ...
$form->setDefaults($defaults);
// ...
}
Zde nastane po odeslání vždy problém s tím, že $defaults
není definováno.
Jak to děláte vy?
EDIT: Odstraněny zavádějící informace.
Editoval Schmutzka (6. 1. 2012 23:04)
- Patrik Votoček
- Člen | 2221
Řeším to celkem dost jednoduše. V továrničce na komponenty pouze inicializuju komponentu se všemi jejími závislostmi. Rozhodně v továrničce komponentu / formulář neplním defaultními daty.
class FooPresenter extends BasePresenter
{
protected function loadItem($id)
{
$item = $this->getContext()->itemService->find($id);
if (!$item) {
$this->flashMessage("Item with id $id does not exist", 'error');
$this->redirect('default'); // aka items list
}
return $item;
}
protected function createComponentRecordForm()
{
$form = new Form;
$form->addText(...);
// ...
}
public function actionEdit($id)
{
$item = $this->loadItem($id);
$defaults = $this->someMagicHere($item);
$this['recordForm']->setDefaults($defaults);
}
}
- Montanus
- Člen | 10
public function actionEdit($id)
{
$this->template->title = 'Edtiovat: Texty';
$this->pole = $this->model->getTable('texty')->fetch($id);
if (!$this->pole) throw new BadRequestException;
$this["recordForm"]->setDefaults($this->pole);
}
$this[„recordForm“] to nezná: Component with name ‚recordForm‘ does
not exist.
Co dělám špatně, díky. Mám verzi pro PHP 5.2
- Tomáš Votruba
- Moderator | 1114
Lexi napsal(a):
Ano, nad tim jsem premyslel. Pak je zde jeste moznost pridat hidden input s id, jenze tomu lze podstrcit rozdilnou hodnotu nez je v parametru url.
Z hlediska best practice me proto zajimalo co pouzivate vy, nebo jestli nekdo navrhne nejake reseni o ktere jsem netusil :)
Veškeré odpovědi na své otázky bys měl najít v Kuchařce: Jak předávat id při editaci záznamu