Okomentovaný CD-collection, napodjení databáze

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

Zdravím gentlemani,
koukám že nejsem sama, kdo se marně snaží zorientovat v tomhle framworku… dokumentaci už jsem vzdala, tak ještě zkusím štěstí tady a pak to buď začnu bastlit v phpku po svém, nebo se pustím do JSF :(

Nemáte tedy někdo pěkně (ideálně česky) okomentovaný nějaký z funkčních příkladu? Nejlépe CD-collection – má to logování uživatelů a práci s databázi, víc nepotřebuju. Chěla bych z toho příkladu vyjít, ale vůbec nechápu která bije. Tak například (nutno ještě dodat že pracuju s poslední stabilní verzi z https://files.nette.org/…7-PHP5.3.zip):

→ proč jsou ve složce CD-collection/app/presenters hned tři presenteři? Navíc dva BasePresenter a jeden Presenter? Jaký je mezi nima rozdíl?

→ kde je definováno připojení na databázi? Něco jako: mysql:host=localhost;dbname=test, root, password? V config.ini jsem našla tohle:

[production < common]
; common database connection
database.driver = sqlite
database.file = "%appDir%/models/demo.db"
database.lazy = TRUE

Je to ono? A jak to mám přenastavit na svou mysql databazi?
Jestli se mi to podaří, budu pak asi muset vytvořit další modely podle tabulek mé databáze co? Nemáte nějaké udělátko, které mi to vygeneruje s SQL dotazů „CREATE TABLE“? O:)

→ kde je definován root? Všude se importují různé „knihovny“ ze složky Nette, ale ta v adresáři CD-collection nakopírovaná není.. hledala jsem teda v config.ini, ale tam se zas narazila na nějaký %appDir%… a to je co? a definované kde?

Za všechny rady a podněty moc děkuji.
Dívka v nesnázích :)

Ani
Člen | 226
+
0
-

Presentery jsou sice tři, ale to co ty píšeš je od koho dědí, ne jak se jmenují. Base dědí od základního nette presenteru. Ty dva ostatní od něj. Díky tomu můžeš věci společné pro ty dva udělat v tom base.

Ano, to je připojení k db, pro mysql to vypadá nějak takhle

database.driver: mysql
database.host: localhost
database.username: username
database.password: password
database.database: database

Generátor modelů není součástí frameworku. Většinou si modelovou vrstvu řeší každý po svém.

Koukni se do složky sandbox tam je vzorová struktura adresářů. S tím že složka www by měla být ta přístupná z webu.

Editoval Ani (9. 6. 2011 16:09)

Claudie1
Člen | 21
+
0
-

Nette najdeš ve složce libs (viz sandbox zmíněný výše).

nanuqcz
Člen | 822
+
0
-

%appDir% je definovaný v index.php

<?php
// absolute filesystem path to the web root
define('WWW_DIR', __DIR__);

// absolute filesystem path to the application root
define('APP_DIR', WWW_DIR . '/app');

// absolute filesystem path to the libraries
define('LIBS_DIR', WWW_DIR . '/libs');

// load bootstrap file
require APP_DIR . '/bootstrap.php';

Nette framework si pak vezme konstantu APP_DIR a dá ji k dispozici i do configu pod názvem appDir

vvoody
Člen | 910
+
0
-

Rozdiel je v bootstrap.php =>
v examploch máš riadok:

<?php
require __DIR__ . '/../../../Nette/loader.php';
?>

a v sanboxe zase:

<?php
require LIBS_DIR . '/Nette/loader.php';
?>

s tým že __DIR__ by mal byť adresár kde sa nachádza aktuálne vykonávaný script a LIBS_DIR máš definovaný v index.php takže sandbox je pripravený na to že si do neho nakopíruješ nette. No v príkladoch je to vyriešené takto aby nemusel byt nette framework nakopírovaný zvlášť v každom príklade, preto sa v nich takto odkazuje na jedno miesto. Takže sa asi predpokladá sa že sa celá rozbalená zložka nakopíruje na webserver. Prišlo mi to trošku divné :) ničo si stiahnuť o čom zatiaľ takmer nič nevieme a rovno si to hodiť na webserver, aj keď len na localhost.