Jak se připojit k db v komponente

marcelxy
Člen | 70
+
0
-

Prosím o pomoc,mám samostatnou komponentu v app/komponent/ a potřebuji v ní ukládat a mazat data v db ale nejsem schopen se v ní připojit k db, v presenteru používám:

private $connection;

function __construct(Nette\Database\Connection $connection)
{
$this->connection = $connection;
}
a normálně to funguje ale když to samé přidám do komponenty tak mi to vyhodi "__construct() must be an instance of App\Nette\Database\Connection, none given,"a nevim co s tím?? a když se snažím vytvořit instanci tak tu třídu vúbec nenajde takže otázka jak mám vytvořit připojení k db v samostatné komponentě?
Diky za rady

David Matějka
Moderator | 6445
+
0
-
  1. komponentu mas v namespace App, v konstruktoru nepouzivas FQN ani nemas Nette v importech, dej tedy do konstruktoru pred nazev tridy \
  2. aby se o autowiring postaralo nette, musis si na komponentu vytvorit tovarnicku, v nette 2.1 nasledovne:
namespace App;

interface FooFactory
{
	/**
	* @return Foo
	*/
	public function create();
}

registrujes v configu:

services:
	- App\FooFactory

a v presenteru injectnes a pouzijes

class BarPresenter extends BasePresenter
{
	/**
	* @var \App\FooFactory
	* @inject
	*/
	public $fooFactory;

	public function createComponentFoo()
	{
		$foo = $this->fooFactory->create();

		return $foo;
	}
}
marcelxy
Člen | 70
+
0
-

Diky za odpověd, ale vidím že to je celé nad moje síly na toto bych nepřišel ani náhodou prosím kde k tomuto existuje nějaká podrobnější dokumentace nebo návod nebo příklady? existuje k tomu nějaká knížka? já bych se to rád naučil ale nevim z čeho? to co se se tu píše v dokumentaci je srozumitené a dostatečné možná pro vás ale ne pro začatečníka! je to nadherný nástroj ale já nevím z čeho se to mám naučit jako začatečník? nic méně jsem to udělal přesně tak a odpověd je
„Please check a @return annotation of the App\FooFactory::create() method. Class ‚App\Foo‘ cannot be found“
s tim se potýkám neustále že nic nemúže najít! at tu class dám kdekoliv nevím jak ho přimět aby to co chci našel a používal? potřebuji využívat VisualPaginator stejna písnička „class VisualPaginator cannot be found“ at ho dám kdekoliv!! opravdo neví co stím jak nato?
ještě jednou dík za trpělivost

David Matějka
Moderator | 6445
+
0
-

App\Foo byl jen ukazkovy nazev, samozrejme to nahrad za nazev tvoji tridy :)

na zacatek doporucuju projit quickstart

k tomu, kam nahravat tridy: v nette je robotloader, ktery proleza definovane adresare a hleda v nich tridy. VisualPaginator tedy nahraj kamkoliv, kde na nej uvidi robot loader

kdyz nevis, zkus se stavit do jabber mistnosti pokud tam bude nekdo aktivni, muzes problem vyresit rychlejc…

RSS tématu Téma zavřeno