Předání databáze do komponenty

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

Opět se obracím s žádostí o radu. Vyzkoušel jsem snad již všechny možné způsoby, jak dostat databázové připojení dovnitř komponenty, ale stále se setkávám s různými chybami (jak zkouším různá řešení). Komponenta má konstruktor:

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

Ovšem věc, kterou nemohu vyřešit je, co přesně předat do konstruktoru při vytváření této třídy ($control = new Components\Expenses(...);). Zkoušel jsem $this->connection i $this->context->database, ale nic nefunguje. Pro úplnost ještě můj config.neon:

parameters:

php:
	date.timezone: Europe/Prague

nette:
	application:
		errorPresenter: Error
		mapping:
			*: Flat\*Module\*Presenter

	session:
		expiration: 14 days

	database:
		dsn: 'mysql:host=localhost;dbname=flat'
		user: flatman
		password: flatmanpass

services:
	authenticator: Authenticator
	- Flat\RouterFactory
	router: @Flat\RouterFactory::createRouter

Zkoušel jsem i zaregistrovat novou service pomocí database: @nette.database, ale to mi vyhazuje Reference to missing service 'nette.database'. a už vážně nevím, co s tím…

batko
Člen | 219
+
0
-

když jsem začínal měl jsem stejné problémy

zde https://forum.nette.org/…vrh-aplikace

je řešení, pročti si to a fakt to pochopíš, čímž bych chtěl ještě jednou poděkovat všem kdo mi poradil :-)

David Matějka
Moderator | 6445
+
0
-

nebo koukni na planette, tam je to prehlednejc napsany

PajaS
Člen | 13
+
0
-

Podívám se na to, nicméně moje otázka spíše směřovala k tomu, v jaké proměnné naleznu v presenteru připojení k databázi, které můžu „natvrdo“ předat konstruktoru.

David Matějka
Moderator | 6445
+
0
-

tu zavislost by sis tam musel injectnout

class FooPresenter extends BasePresenter
{
	/**
	* @var \Nette\Database\Context
	* @inject
	*/
	public $database;
}

ale to neni spravny pristup. presenter by nemel vedet o zavislostech komponenty. co kdyz budes chtit do komponenty pridat dalsi zavislost? to to budes upravovat na 10 mistech, kde komponentu vytvaris?