Předání databáze do komponenty
- PajaS
- Člen | 13
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
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
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?