Připojení do databáze pro každou Form komponentu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Desttro
Člen | 126
+
0
-

Zdravím, chtěl jsem se zeptat, jak navázat spojení s databází pro každou Form. V každém presenteru používám Nette\Database\Context, příklad:

/** @var Nette\Database\Context */
private $database;

public function __construct(\Nette\Database\Context $database)
{
    parent::__construct();
    $this->database = $database;
}

no, a když to chci dát do svojeho formuláře, kde už kontruktor je, tak to (asi logicky) nejede. Zde je příklad mého formuláře:

namespace FrontModule\Forms;

use	Nette\Application\UI\Form;

class SearchForm extends Form
{
	public function __construct($parent, $name) {
		parent::__construct($parent, $name);

        $this->addSelect('model');

        $this->onSuccess[] = $this->formSubmited;
	}

	public function formSubmited(\Nette\Forms\Controls\ImageButton $button)
	{

	}

}

Komponentu volám potom zvlášť v presenteru takhle:

protected function createComponentSearchForm($name) {
		return new SearchForm($this, $name);
	}

Jak prosím navázat spojení s databází?

Děkuji.

Oli
Člen | 1215
+
0
-
  1. Přepsal bych si formulář jako komponentu.
  2. Nemusíš v potomkovi volat stejý presenter jako v předkovi. Takže to klidně můžeš předat do toho konstruktoru:
class SearchForm extends Form
{
	public function __construct($parent, $name, \Nette\Database\Context $database) {
        parent::__construct($parent, $name);
		$this->database = $database;
		// ...
	}
}

3. Spíš než kontext bych si předal nějakou třídu, která bude pracovat s databází. Nemusíš pak všude psát ten samej příkaz pro např. uložení. Zavoláš jen tu repository service a na ní zavoláš něco jako save($array).

Desttro
Člen | 126
+
0
-

Zkusím, díky