Jak se připojit k db v komponente
- marcelxy
- Člen | 70
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
- komponentu mas v namespace App, v konstruktoru nepouzivas FQN ani nemas
Nette v importech, dej tedy do konstruktoru pred nazev
tridy
\
- 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
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
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…