config.neon a dibi::connect()
- esorimmer
- Člen | 23
Dlouho jsem hledal (a bohužel nenašel) správný zápis pro: dibi::connect(
$container->????[‚???‘] );
Respektive co dosadit za ty otázníky a jak správně zapsat config.neon, aby
to běželo. Níže uvádím pro ty, co by dlouho zkoušeli a hledali jako já.
Zkušenější prominou.
config.neon
common:
php: # PHP configuration
date.timezone = "Europe/Prague"
services:
robotLoader:
run: true
dibi:
class: DibiConnection
arguments: [ {
driver: mysql
charset: utf8
hostname: localhost
username: root
password: 123456
database: nette
persistent: true
lazy: true
} ]
dibi::connect($container->dibi->config); žádné params[‚database‘] nebo params [‚dibi‘] mi neběželo.
- Jan Voráček
- Člen | 90
Tímhle configem si vytvoříš service ‚dibi‘. Teď už ji jenom nainjectovat do modelů. To můžeš buď přímo v configu:
common:
php: # PHP configuration
date.timezone = "Europe/Prague"
services:
robotLoader:
run: true
dibi:
class: DibiConnection
arguments: [ {
driver: mysql
charset: utf8
hostname: localhost
username: root
password: 123456
database: nette
persistent: true
lazy: true
} ]
model:
class: Model
arguments: ["@dibi"]
Nebo přes nějaký model locator. Příklad: https://gist.github.com/976155
Pokud bys chtěl dibi používat způsobem, jakým naznačuješ na konci
dotazu (tj. voláním statických metod), nevytvářej si service, ale jenom si
ulož parametry spojení. Následně v bootstrapu můžeš
zavolat dibi::connect($configurator->container->params->database);
config.neon
common:
php: # PHP configuration
date.timezone = "Europe/Prague"
services:
robotLoader:
run: true
database:
driver: mysql
charset: utf8
hostname: localhost
username: root
password: 123456
database: nette
persistent: true
lazy: true
Editoval Jan Voráček (12. 7. 2011 10:59)
- Jan Voráček
- Člen | 90
Byl tam překlep. dibi:connect
→
dibi::connect
A jestli ti můžu poradit, nesnaž se programovat způsobem
copy&paste :)
- Jan Voráček
- Člen | 90
Máš aktuální verzi Nette? Jestli máš trochu starší release, je
možný, že database je ArrayHash. Nicméně stačí přetypovat na pole
(array)$configurator->container->params->database
.