ugrás a tartalomhoz

ZendFramework: menü adatbázisból

binarpy · 2011. Jan. 16. (V), 19.50
Elég kezdő vagyok ebben a ZendFramework dologban, és most olyat szeretnék amire nem találtam példát.
Annyi lenne a célom, hogy adatbázisból szeretnék lekérdezni adatokat, amik menüként jelennek meg minden oldalon. Tehát nem controllerben kellene ezt megoldani, mert akkor minden oldal controllerébe bele kellene tennem és nem hiszem hogy ez lenne a jó megoldás.
Gondoltam rá hogy a layout-ba teszem, de nem tudom oda hogy kellene. Az tudom hogy kell csinálnom egy modell-t az adatok eléréséhez, de azt a modellt honnan, mivel hívjam meg? View helperrel?

Előre is köszi
 
1

Mondjuk Bootstrap-ben, vagy

Protezis · 2011. Jan. 16. (V), 22.10
Mondjuk Bootstrap-ben, vagy controller plugin-ben kiolvasod, összerakod a navigation objektumot, és átadod a view-nak. Ezután már használhatod a beépített helpereket: menu, breadcrumb, sitemap, stb.

Itt láthatsz egy példát az előbbire, a megjelenítésre meg mondjuk itt.
2

Plugin regisztrálása

binarpy · 2011. Jan. 16. (V), 23.01
Rendben, írtam a library mappába egy saját plugint, ami a te példád alapján átad a view-nak egy objektumot. De hogy és hol kell regisztrálnom a plugin-t, hogy aztán tudjak hivatkozni rá a layout-ban vagy a view-ban?
pl találtam ilyet:
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new MyPlugin());
Ha ez jó is, ezt hova kell beírnom?

Bocsi, de még kicsit küzdök a teljes framework átlátásával :)
3

Igen, így kell regisztrálni.

Protezis · 2011. Jan. 16. (V), 23.21
Igen, így kell regisztrálni. Mivel a plugin-ban akár routolás előtti műveleteket is végezhetsz (amik jóval a dispatch, ezáltal a controllerek lefutása előtt hajtódnak végre), ezért ez előtt kell beregisztrálni.

Jelenleg két szép megoldás jut eszembe: vagy a Bootstrap osztályban (esetleg valamelyik modul bootstrap osztályában, ha használsz modulokat), vagy a Zend_Application_Resource_FrontController segítségével regisztrálod be a plug-ineket. Az application_resource osztályok a config-ból táplálkoznak, vagyis írhatsz egy ilyet a configba (feltéve, hogy ini-t használsz):
resources.frontController.plugins[] = MyPlugin
Az előbb linkelt Navigation plug-int a Bootstrap-ben regisztráltam be.

Természetesen - mivel singleton a Zend_Controller_Front osztály - akár az index.php-d legelején elvégezheted a regisztrációt.
4

Hm, sikerült! :) A te

binarpy · 2011. Jan. 16. (V), 23.32
Hm, sikerült! :)

A te segítségeddel + ezzel sikerült összehozni, hogy tudjak értéket átvinni a view-ba. Most nekiugrok ennek a navigation objektumnak, mert ez lehet jobb és igényesebb megoldást tud produkálni mint amit én találtam ki.

Köszönöm a segítséged!
5

Szívesen. Ajánlom a

Protezis · 2011. Jan. 16. (V), 23.37
Szívesen. Ajánlom a Zend_Navigation és a Zend_View (azon belül is a navigation-höz tartozó helper) témaköröket a manualban.