Defaultní hodnoty formuláře – jak na ně přes „fasádu“?

- Grelek
 - Člen | 233
 
Zdravím,
byl jsem na školení od Davida Grudla a tam jsem se rozhodl, že přepíšu stávající aplikaci do podoby, která odpovídá kostře aplikace, kterou jsme na školení psali.
Problém je v tom, že když v HomepagePresenteru, který je v Admin
modulu, vytvořím formulář a chci do něj načíst defaultní hodnoty, nevím
jak na to. Níže přikládám kód HomepagePresenteru a
HomepageFacade.
HomepageFacade:
<?php
class HomepageFacade extends Nette\Object
{
    public $db;
    public function __construct(Nette\Database\Connection $db)
    {
        $this->db = $db;
    }
    public function getBoxes()
    {
        return $this->db->table('homepageboxes');
    }
    public function getBox($id)
    {
        $box = array($this->db->query("SELECT id, title, content, modified FROM homepageboxes WHERE id=$id"));//->fetch('id', 'title', 'content', 'modified'));
    }
}
HomepagePresenter:
<?php
namespace AdminModule;
use Nette\Application\UI\Form,
    Nette;
/**
 * Default admin presenter.
 */
class HomepagePresenter extends SecuredPresenter
{
    private $homepageFacade;
    private $id;
    function __construct(\HomepageFacade $homepageFacade)
    {
        $this->homepageFacade = $homepageFacade;
    }
    public function renderDefault()
    {
        $this->template->boxes = $this->homepageFacade->getBoxes();
    }
    public function actionEditBox($id)
    {
    }
    public function createComponentEditBoxForm()
    {
        $form = new Form();
        $form->addText('id', 'ID')
            ->setRequired('Prosím, vyplňte ID.')
            ->addRule(FORM::INTEGER, 'Hodnota pole ID musí být celočíselná.')
            ->addRule(FORM::MAX_LENGTH, 'Zadané ID je příliš dlouhé, maximální délka je 10 čísel.', 10);
        $form->addText('title', 'Titulek')
            ->setRequired('Prosím, vyplňte titulek.')
            ->addRule(FORM::MAX_LENGTH, 'Zadaný titulek je příliš dlouhý, maximální délka je 200 znaků.', 200);
        $form->addTextArea('content', 'Obsah');
        $form->addText('modified', 'Upraveno');
        $form->addSubmit('edit', 'Upravit');
        $form->onSuccess[] = array($this, 'editBoxFormSubmitted');
        return $form;
    }
}
Omlouvám se za delší post, ale opravdu nevím, kde je chyba. Díky za všechny případné odpovědi.

- Grelek
 - Člen | 233
 
Tak jsem tu znovu, ovšem s dotazem ohledně databáze.
V HomepagePresenteru mám:
$this['editBoxForm']->setDefaults(array(
    'id' => $this->homepageFacade->db->exec("SELECT `id` FROM `homepageboxes` WHERE id=$id"),
    'title' => $this->homepageFacade->db->exec("SELECT `title` FROM `homepageboxes` WHERE id=$id"),
    'content' => $this->homepageFacade->db->exec("SELECT `content` FROM `homepageboxes` WHERE id=$id"),
    'modified' => $this->homepageFacade->db->exec("SELECT `modified` FROM `homepageboxes` WHERE id=$id"),
));
Vím, je to trochu nešikovné, ale o to mi teď nejde.
I přesto, že si do každého prvku formuláře „uložím jiný SQL
dotaz“, ve všech prvcích je naprosto stejná hodnota, tj. 1, protože se
vytáhne z 'id' => $thi... hodnota 1. Netuším ale, proč
je všude.