Vytvoření připojení k databázi
- James
- Člen | 54
Zdravím,
potřeboval bych vytvořit spojení do databáze na základě nutných informací pro připojení tedy, dsn, username, password. Tyto informace získám z formuláře, a na základě těchto získaných dat se teprve snažím vytvořit spojení z databází. Pokud použiji
<?php
$connection = new Nette\Database\Connection($dsn, $username, $password);
?>
v konstruktoru modelu, tak se dostávám do situace, kdy v době vytvoření modelu tyto data ještě nemám z formuláře k dispozici, takže se spojení s databází nevytvoří. Jde tento problém nějak vyřešit?
Díky za radu
Editoval James (14. 3. 2013 12:55)
- frosty22
- Člen | 373
Pokud získáváš data pro připojení z formuláře, tak předpokládám tedy, že se jedná o nějaký „phpmyadmin“ co tvoříš (jiný důvod, proč získávat data od uživatele pro připojení do databáze mě nenapadá)?
V tomto případě tedy po odeslání formuláře se dostáváš do procesu onSuccess na formuláři, kde si tyto data ulož například do session? a následně přesměruj na jiný presenter, kde již je databáze potřeba. Na stránce, kde se získávají data pro připojení tedy databáze dostupná samozřejmě nebude. Logika stejná jako s přihlašováním uživatelů.
- James
- Člen | 54
Úplně ně tak o phpmyadmin nejde, vytvářím aplikaci pracující se strukturami tabulek nad databázemi a proto potřebuji formulář, skrze který se připojím k libovolné databázi. Je mi jasné, že na stránce s formulářem databáze dostupná nebude, to není ani mým cílem. Pouze potřebuji vytvořit připojení do databáze až tehdy, kdy budu mít data z formuláře.
- frosty22
- Člen | 373
No moc asi nechápu tedy v čem je problém? Máš problém s předáváním connection mezi servicema? Jelikož pokud je máš definované v Neonu, tak nemůžeš předat ještě connection, jelikož není nastavené? Tohle mě asi napadá jako případný problém. A pokud ano, tak mě moc řešení nenapadá, resp. sice můžeš nastavit Connection například ve startup v BasePresenteru ze Session, ale to si nemůžeš být jistý, že nějaká služba si ho již nevyžádala dříve (leč to se nestane, ale z hlediska OOP to není košér:).
Takže leda to ošetřit nějakým proxy objektem na Connection, který by v případě, že si ho služba vytáhne dříve vyhazoval nějakou vyjímku? Taky zrovna né moc cool řešení. Ale máš tedy na mysli tento problém či nějaký jiný?