Firebird a Nette – jak na to?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Klainer
Člen | 42
+
0
-

Dobrý den
Mám menší problém. Můj současný klient využívá jako databázový server Firebird, chtěl bych se Vás zeptat jestli někde existuje nějaký návod jak tento server rozjet s NETTE frameworkem, nic jsem zatím nenašel.

V NETTE jsem začátečník a budu rád za Vaše rady a nápady.
Děkuji

Jan Tvrdík
Nette guru | 2595
+
0
-

Nette\Database nemá pro FireBird driver. Použit místo ní dibi.

Klainer
Člen | 42
+
0
-

Snažím se Nette propojit s nejnovějším DIBI, ale nejde mi to.
Postupuji dle návodu: https://doc.nette.org/cs/database#…

config.neon vypadá takhle:

common:
	dibi:
		host: localhost
		username: root
		password: ***
		database: foo
		lazy: TRUE


	php:
		date.timezone: Europe/Prague
		# session.save_path: "%tempDir%/sessions"
		# zlib.output_compression: yes

V bootstrap.php jsem přidal:

//Konfigurace Dibi
$configurator->onCompile[] = function ($configurator, $compiler) {
    $compiler->addExtension('dibi', new DibiNetteExtension);
};

A vyhazuje mi to chybu :
Class ‚Nette\Config\CompilerExtension‘ not found search►

Source file ▼

File: …\libs\dibi\Nette\DibiNetteExtension.php Line: 22

Nevím si s tím rady, děkuji za rady !

Editoval Klainer (24. 6. 2012 14:23)

uestla
Backer | 799
+
0
-

Kolikrát stačí si tu chybovou zprávu přečíst.

Teď jde o to, proč to tu třídu nenajde. Používáš prefixovanou verzi Nette? Máš nastavený RobotLoader?

Klainer
Člen | 42
+
0
-

Používám čistou instalaci Nette s prefixy.
Edit: Dělá to i na verzi bez prefixů

Editoval Klainer (24. 6. 2012 19:14)

Ondřej Altman
Člen | 17
+
0
-
  1. máš v libs/dibi/Nette/ soubor DibiNetteExtension.php ?
  2. v bootstrapu require_once LIBS_DIR . ‚/dibi/dibi.php‘ ?
Majkl578
Moderator | 1364
+
0
-

Klainer napsal(a):

Používám čistou instalaci Nette s prefixy.
Edit: Dělá to i na verzi bez prefixů

Prefixy != namespaces, stáhni verzi pro 5.3+ se jmennými prostory.

uestla
Backer | 799
+
0
-

Otázka ohledně RobotLoaderu stále čeká na své zodpovězení…

Klainer
Člen | 42
+
0
-
  1. Mám
  2. Jsem původně neměl, ale přidal jsem a nic …
// Load Nette Framework
require LIBS_DIR . '/Nette/loader.php';
require_once LIBS_DIR . '/dibi/dibi.php';

// Configure application
$configurator = new Configurator;

//Konfigurace Dibi
$configurator->onCompile[] = function ($configurator, $compiler) {
    $compiler->addExtension('dibi', new DibiNetteExtension);
};

edit: pro Majkl578: Rád bych využil novější verzi PHP, klient bohužel na svých serverech má verzi starší.

Editoval Klainer (24. 6. 2012 20:51)

uestla
Backer | 799
+
0
-

dibi.php ručně vkládat nemusíš, pokud máš zapnutý a nastavený RobotLoader (na což stále ještě nepadla odpověď…).

Máš-li Nette ve verzi pro PHP 5.2, bude to chtít ručně přejmenovat právě onu problémovou třídu z Nette\Config\CompilerExtension na NConfigCompilerExtension.

Editoval uestla (24. 6. 2012 21:58)

Klainer
Člen | 42
+
0
-

Mám čistou instalaci NETTE frameworku, čili jsem neprováděl žádné změny nebo nastavování RobotLoaderu.
Zkoušel jsem přejmenovat na NConfigCompilerExtension, ale nic.

Editoval Klainer (24. 6. 2012 22:43)

uestla
Backer | 799
+
0
-

V tom případě si dovolím vyvěštit další informaci, zkus místo NConfigCompilerExtension napsat ConfigCompilerExtension.

Klainer
Člen | 42
+
0
-

Paráda měl jsi pravdu děkuji ti moc !

Chtěl bych se zeptat ještě na jednu drobnost.
Mám funkci, které předávám pole které vypadá takhle:

array(3) [
   0 => "HODNOTAL1" (9)
   1 => "HODNOTAL2" (9)
   2 => "HODNOTAL3" (9)
]

Funkce vypadá takhle:

public static function getActual($polee)
{


    $parametry = (join(",",$polee));


    $aa = 'HODNOTAN1';
    $pole  =  dibi::query('select %n from  AKTUALNI_STAV_NADRZE  WHERE  ID = (SELECT MAX(ID) FROM AKTUALNI_STAV_NADRZE)',  $parametry ); // když dám 'HODNOTAN1,HODNOTAN2,HODNOTAN3' tak to funguje
    dump($pole);
    $data =  array();
    foreach ($pole->fetchAll() as $row)
    {
           $data[1] = $row['HODNOTAN1'];
           $data[2] = $row['HODNOTAN2'];
           $data[3] = $row['HODNOTAN3'];
    }

    return $data;
}

Chci selektovat jen určité atributy, pole jsem si převedl na řetězec a dal jako parametr dibi dotazu, bohužel mi to za nic na světe nebere a píše to chybu:

Notice

Undefined property: DibiRow::$HODNOTAN1 search►

Source file ▼

File: ...\libs\dibi\libs\DibiRow.php   Line: 126

116:
117:        final public function offsetSet($nm, $val)
118:        {
119:            $this->$nm = $val;
120:        }
121:
122:
123:
124:        final public function offsetGet($nm)
125:        {
126:            return $this->$nm;
127:        }
128:

Nevím co s tím děkuji za rady !

llook
Člen | 407
+
0
-

Předávej tam rovnou to $polee, na řetězec ho za tebe převede Dibi.

Klainer
Člen | 42
+
0
-

Jasně, ale dělá to furt to samé.. :/

llook
Člen | 407
+
0
-

Není to proto, že vybíráš „HODNOTAL1“, ale pak se snažíš číst „HODNOTAN1“?

Klainer
Člen | 42
+
0
-

:) fakt paráda, díky moc tohle byla ale banalita