Nette 2.0 config.neon a dibi pripojení
- KillPrd
- Začátečník | 110
Přecházím na novou verzi nette a nedaří se mi připojit k databázy prošel jsem téměř celé fórum ale nikde jsem nenašel funkční příklad připojení k databázy za použití dibi. hláška Dibi is not connected to database
dříve se do bootstrapu dalo
dibi::connect(Environment::getConfig(‚database‘)); a byl pokoj :)
ted je nějaký nový zápis který nemohu najít…
můj config:
<?php
common:
php: # PHP configuration
date.timezone: Europe/Prague
# session.save_path: "%tempDir%/sessions"
# zlib.output_compression: yes
services:
robotLoader:
run: true
database:
class: Connection
arguments: ['mysql:host=localhost;dbname=poradna', 'root', 'root']
model:
class: Model
arguments: ["@database"]
authenticator:
factory: ["@model", createAuthenticatorService]
production < common:
development < common:
database:
driver: mysql
host: localhost
username: root
password: root
database: test
charset: utf8
profiler: true
console < common:
?>
a muj bootstrap:
<?php
<?php
// Load Nette Framework
require LIBS_DIR . '/Nette/loader.php';
// Enable Debug for error visualisation & logging
Debugger::$strictMode = TRUE;
Debugger::enable();
// Load configuration from config.neon file
$configurator = new Configurator;
$container = $configurator->loadConfig(dirname(__FILE__) . '/config.neon');
// Setup router
$router = $container->router;
//$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
// Configure and run the application!
$application = $container->application;
//$application->catchExceptions = TRUE;
$application->errorPresenter = 'Error';
$application->run();
?>
Tak vyřešeno
byl problém v tabulátorech
takže funkční připojení config.neon
<?php
common:
php: # PHP configuration
date.timezone: Europe/Prague
# session.save_path: "%tempDir%/sessions"
# zlib.output_compression: yes
services:
robotLoader:
run: true
database:
class: Connection
arguments: ['mysql:host=localhost;dbname=poradna', 'root', 'root']
model:
class: Model
arguments: ["@database"]
authenticator:
factory: ["@model", createAuthenticatorService]
production < common:
development < common:
database:
driver: mysql
host: localhost
username: root
password: root
database: poradna
charset: utf8
profiler: true
console < common:
?>
a bootstrap:
<?php
/**
* My Application bootstrap file.
*/
// Load Nette Framework
require LIBS_DIR . '/Nette/loader.php';
// Enable Debug for error visualisation & logging
Debugger::$strictMode = TRUE;
Debugger::enable();
//Environment::loadConfig();
// Load configuration from config.neon file
$configurator = new Configurator;
$container = $configurator->loadConfig(dirname(__FILE__) . '/config.neon');
//Environment::loadConfig();
dibi::connect(Environment::getConfig('database'));
// Setup router
$router = $container->router;
//$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
// Configure and run the application!
$application = $container->application;
//$application->catchExceptions = TRUE;
$application->errorPresenter = 'Error';
$application->run();
?>
Editoval KillPrd (29. 6. 2011 11:39)
- uestla
- Backer | 796
V Neonu (ve kterém se teď config píše) hraje roli odsazení, čili nejrpve
# ...
development < common:
database:
driver: mysql
host: localhost
username: root
password: root
database: test
charset: utf8
profiler: true
console < common:
# ...
A v bootstrapu
$configurator = new Configurator;
$container = $configurator->loadConfig(dirname(__FILE__) . '/config.neon');
dibi::connect( $container->params['database'] );
EDIT: použij moje řešení nezávislé na Environmentu. Díky.
PS: občas je dobré číst odpovědi na svůj dotaz :-)
PPS: btw tím EDITem jsi to pěkně zaplácnul a zaspamoval a celkově znepřehlednil…
Editoval uestla (29. 6. 2011 12:59)
- MelkorNemesis
- Člen | 36
Dibi sice nabizi pristup i pouze pres static call, ale pokud jsem s dibi pracoval v nette s DI, tak jsem si cele dibi radeji zaregistroval jako sluzbu v Configuratoru. Predani nastaveni databaze mam stejne, jde mi jen o pristup k dibi.
<?php
use Nette\DI;
class Configurator extends Nette\Configurator
{
public static function createServiceDibi(DI\Container $container)
{
$dibiConnection = new \DibiConnection($container->params['database']);
$dibiConnection->query('SET NAMES UTF8');
return $dibiConnection;
}
}
?>
a volal nasledne v kodu
<?php
$this->context->dibi;
?>
Editoval MelkorNemesis (2. 7. 2011 11:55)
- Tomáš Votruba
- Moderator | 1114
Pokud byste ještě někdo řešil jak na Nette 2.0 a dibi připojení, zde je ukázové řešení.
- vosy
- Člen | 525
uestla napsal(a):
V Neonu (ve kterém se teď config píše) hraje roli odsazení, čili nejrpve
# ... development < common: database: driver: mysql host: localhost username: root password: root database: test charset: utf8 profiler: true console < common: # ...
A v bootstrapu
$configurator = new Configurator; $container = $configurator->loadConfig(dirname(__FILE__) . '/config.neon'); dibi::connect( $container->params['database'] );
v config.neon mam
`
.
.
.
..
development < common:
database:
host: 127.0.0.1
database: _blog
username: ****
password: ****
driver: mysqli
charset: utf8
lazy: TRUE`
v bootstrap.php mam
`.
.
.
.
// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . ‚/config/config.neon‘);
$configurator->addConfig(__DIR__ . ‚/config/config.local.neon‘,
$configurator::NONE); // none section
$container = $configurator->createContainer();
dibi::connect( $container->params[‚database‘] );
return $container;`
vysledek:
Nette\InvalidStateException
Found sections ‚database‘ in configuration, but corresponding extensions are
missing.
// Create Dependency Injection container from config.neon file
23: $configurator->addConfig(__DIR__ . ‚/config/config.neon‘);
24: $configurator->addConfig(__DIR__ . ‚/config/config.local.neon‘,
$configurator::NONE); // none section
25: $container = $configurator->createContainer();
26:
27: dibi::connect( $container->params[‚database‘] );
jak mohu pokracovat, jsem zacatecnik a trochu me tu spousta veci mate, zvlaste navody pro zacatecniky.