práce s databází v komponentě

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

Zdravím,
Mám komponentu s názvem GraphDailyControl kde se znažím vyposivat databázi pomocí:

private $database;

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

Komponentu inicializuji v BasePresenteru pomocí:

protected function createComponentGraphDaily()
	{
 	 	$control = new \GraphDailyControl;
 	 	return $control;
	}

Ale píše mi to chybu: Argument 1 passed to GraphDailyControl::__construct() must be an instance of Nette\Database\Context, none given, called in BasePresenter.php on line 20

Jak mohu do té komponenty dostat databázi?
Díky.

David Matějka
Moderator | 6445
+
+1
-

nejlepe pres tovarnu, respektive generovanou tovarnu

AdamBI
Člen | 17
+
0
-

A nejde to ještě jinak než pro každou komponentu vytvářet ještě továrnu? Například nějak v services zaregistrovat přímo tu komponentu?

David Matějka
Moderator | 6445
+
0
-

Například nějak v services zaregistrovat přímo tu komponentu?

ne, to je problematicke. tovarna je nejlepsi

edit: jestli pouzivas phpstorm, tak si nainstaluj tenhle plugin od @jiri.pudil

AdamBI
Člen | 17
+
0
-

phpstorm nepoužívám. Udělal jsem to pomocí továrny ale teď píše: Check a type hint or annotation @return of the App\Components\IGraphDailyFactory::create() method used in service ‚24_App_Components_IGraphDailyFactory‘, class ‚App\Components\GraphDaily‘ cannot be found.

Editoval AdamBI (23. 3. 2017 11:04)

David Matějka
Moderator | 6445
+
0
-

factory mas totiz v namespace App\Components, ale tu komponentu uz ne – tu mas v globalnim namespace.

takze bud tu komponentu presun do stejneho namespace, nebo v return anotaci uved FQN (tedy \GraphDaily)

AdamBI
Člen | 17
+
0
-

Supr už funguje. Díky moc!

AdamBI
Člen | 17
+
0
-

Tak teď jsem vypnul debug mod a najednou mi to hodí chybu: We're sorry! The server encountered an internal error and was unable to complete your request. Please try again later.
Přitom s zapnutým debug modem to jede v pohodě.
V logu mi to píše: [2017–03–24 08–12–29] Error: Call to a member function create() on null in /app/presenters/BasePresenter.php:22 @@ exception–2017–03–23–13–18–41e5517517.html
Co s tím? Zřejmě nefunguje ta továrna při vypnutém debug modu.

Zuben45
Člen | 268
+
+1
-

zkus smazat cache ;)