Spojení Nette 2.3.2 s Dibi 2.3.2
- Wailey
- Člen | 48
Ahoj,
snažil jsem se spojit Dibi s Nette (sendbox) podle návodu
nahrál jsem Dibi do složky Vendor
Registroval službu a nastavil DB
config.neon
services:
connection:
class: DibiConnection(%database%)
config.local.neon
database:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user:
password:
options:
lazy: yes
Do bootstrap.php dal
$configurator->onCompile[] = function ($configurator, $compiler) {
$compiler->addExtension('dibi', new Dibi\Bridges\Nette\DibiExtension22);
};
Ale samozřejmě mi třídu „DibiExtension22“ nemůže najít,
prosím vás, ví někdo, jak na to? Moc díky
Editoval Wailey (11. 5. 2015 12:07)
- Pavel Kravčík
- Člen | 1195
Jde o to, že vendor má autoload z Composeru, takže pokud to nenahraješ přes Composer, tak neuvidíš, protože RobotLoader vendor ignoruje.
Editoval kzk_cz (11. 5. 2015 12:33)
- Pavel Kravčík
- Člen | 1195
@Oli: O takových možnostech bych mlčel. :D Nebo si tam budou lidi dávat rovnou vendor. :)
- Šaman
- Člen | 2659
kzk_cz napsal(a):
@Oli: O takových možnostech bych mlčel. :D Nebo si tam budou lidi dávat rovnou vendor. :)
Já bych o tom nemlčel. Knihovny, pro které není composer balíček, se
právě tímto způsobem přidávají. Takže je dobré vědět, že buď
nakopírovat do adresáře /libs
, který se
přidá pod správu robotLoadera, nebo pomocí composeru do
/vendor
(a nikdy ne kopírovat tam něco ručně).
No a druhá věc je, že Dibi má balíček, takže je velmi důrazně doporučeno použít composer.
- Milo
- Nette Core | 1283
@Wailey
- Nainstaluj dibi
cd /projekt/
composer require dibi/dibi v2.3.2
- Zaregistruj dibi extension do DI kontejneru v sekci extensions
# config.neon
extensions:
dibi: Dibi\Bridges\Nette\DibiExtension22
# tahle extenžna přidá do kontejneru službu @dibi.connection (to je instance \DibiConnection)
- Nakonfiguruj extenžnu
# config.neon
dibi:
driver: postgre
port: 5433
database: test
username: 'user'
password: 'heslo'
lazy: TRUE
- Vyžaduj DibiConnection
# app/model/DataSource.php
namespace App\Model;
class DataSource
{
function __construct(\DibiConnection $db)
{
}
}
# config.neon
services:
# Automaticky, kontejner ví kde vzít parametr konstruktoru
- App\Model\DataSource
# nebo ručně
- App\Model\DataSource(@dibi.connection)
- David Matějka
- Moderator | 6445
@kuty.cz asi bych registrovat 2 extension a pro druhy vypnul autowiring:
extensions:
dibi: Dibi\Bridges\Nette\DibiExtension22
dibi2: Dibi\Bridges\Nette\DibiExtension22
dibi:
driver: ...
...
dibi2:
....
services:
dibi2.connection:
autowired: false
- kuty.cz
- Člen | 33
Díky, jsem psal rychleji než jsem myslel a už jsem to takhle i vyzkoušel.. :-)
Ale ono se to určitě bude hodit i někomu jinému.
David Matějka napsal(a):
@kuty.cz asi bych registrovat 2 extension a pro druhy vypnul autowiring:
extensions: dibi: Dibi\Bridges\Nette\DibiExtension22 dibi2: Dibi\Bridges\Nette\DibiExtension22 dibi: driver: ... ... dibi2: .... services: dibi2.connection: autowired: false
- David Grudl
- Nette Core | 8218
Autowiring se dá vypnout přímo v sekci dibi (od poslední verze):
extensions:
dibi: Dibi\Bridges\Nette\DibiExtension22
dibi2: Dibi\Bridges\Nette\DibiExtension22
dibi:
driver: ...
dibi2:
...
autowired: false
- Milo
- Nette Core | 1283
Jj. Pro úplnost, moje best practice konfigurace jak ji teď používám. Šlape to bezvadně:
# config.neon
parameters:
databases:
application:
username: # set in config.local.neon
password: # set in config.local.neon
students:
username: # set in config.local.neon
password: # set in config.local.neon
schedules:
username: # set in config.local.neon
password: # set in config.local.neon
riv:
username: # set in config.local.neon
password: # set in config.local.neon
services:
# External data sources
- App\Model\Students(@dibi.students.connection)
- App\Model\Schedules(@dibi.schedules.connection)
- App\Model\Riv(@dibi.riv.connection)
extensions:
dibi.application: Dibi\Bridges\Nette\DibiExtension22
dibi.students: Dibi\Bridges\Nette\DibiExtension22
dibi.schedules: Dibi\Bridges\Nette\DibiExtension22
dibi.riv: Dibi\Bridges\Nette\DibiExtension22
dibi.application:
driver: postgre
port: 5433
database: xxxxx
username: %databases.application.username%
password: %databases.application.password%
lazy: TRUE
dibi.students:
autowired: no
driver: oracle
database: "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = x.x.x.x)(PORT = 1529)))(CONNECT_DATA = (SID = x)))"
username: %databases.students.username%
password: %databases.students.password%
charset: UTF8
lazy: TRUE
dibi.schedules:
autowired: no
driver: oracle
database: "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = y.y.y.y)(PORT = 1529)))(CONNECT_DATA = (SID = y)))"
username: %databases.schedules.username%
password: %databases.schedules.password%
charset: UTF8
lazy: TRUE
dibi.riv:
autowired: no
driver: oracle
database: "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = z.z.z.z)(PORT = 1529)))(CONNECT_DATA = (SID = z)))"
username: %databases.riv.username%
password: %databases.riv.password%
charset: UTF8
lazy: TRUE