konto usunięte

Temat: Moduły w ZF

Witam

Zamierzam się zagłębić w ZF i następną aplikację podzielić na moduły. Niestety na necie nie ma o nich za wiele, albo ja nie potrafię znaleźć.

Od czego zacząć? Jak powinna wyglądać struktura katalogów? Najważniejsze, jak połączyć moduły w całość, tak żeby to miało ręce i nogi?

Za wszelkie wskazówki z góry dziękuję :)
Szymon Rybczyński

Szymon Rybczyński właściciel,
Prohost.pl

Temat: Moduły w ZF

Różnica jest w dodatkowych 2ch katalogach w application
/application/moduly/nazwa/controllers
w katalogu nazwa są katalogi normalne jak bez modułów.

W bootstrapie:
$front = Zend_Controller_Front::getInstance();
$front->addModuleDirectory('../application/moduly');Szymon Rybczyński edytował(a) ten post dnia 18.04.10 o godzinie 16:49

konto usunięte

Temat: Moduły w ZF

Okej, a jeśli chciałbym się dobrać dajmy na to do funkcji indexAction() w moduly/nazwa/controllers/fooController.php z poziomu modułu default?

Mam zamiar zrobić jeden moduł default, który będzie wyświetlał części innych, taki dashboard.
Wojciech Andruszkiewicz

Wojciech Andruszkiewicz Inżynier
oprogramowania -
Melog.com Sp. z o.o.

Temat: Moduły w ZF

Ja u siebie mam tak zrobiony Bootstrap, że jest moduł Default, w którym wszystkie klasy mają normalne nazwy (bez przedrostków), np. IndexController
zaś inne moduły, jak np. Admin mają kontrollery typu: Admin_IndexController, Admin_UserController, ...
a chcąc się dostać np. w widoku modułu Default to modułu Admin należy w helperze podać nazwę modułu:
$this->url(array('action' => 'list', 'controller' => 'user', 'module' => 'admin'));

konto usunięte

Temat: Moduły w ZF

Wojciech Andruszkiewicz:
a chcąc się dostać np. w widoku modułu Default to modułu Admin należy w helperze podać nazwę modułu:
$this->url(array('action' => 'list', 'controller' => 'user', 'module' => 'admin'));
Wygenerowanie linka do żaden problem. Chodziło mi o taką sytuację:

Mam sobie bloga (moduł default), który ma posty (posts) i kategorie (categories) - teraz pytanie jak w module default wyświetlić listę postów korzystając z modułu posts. Bo pisanie w module default kodu typu

$posts = new Application_Model_DbTable_Posts();
$this->view->posts = $posts->getPosts();

jest sprzeczne z DRY.

konto usunięte

Temat: Moduły w ZF

Może spróbuj z Action View Helper (http://framework.zend.com/manual/en/zend.view.helpers....

konto usunięte

Temat: Moduły w ZF

Wojciech Andruszkiewicz:
Ja u siebie mam tak zrobiony Bootstrap, że jest moduł Default, w którym wszystkie klasy mają normalne nazwy (bez przedrostków), np. IndexController
A jak ci się udało usunąć przedrostek Default_ z kontrolerów?
Mam taki kod:

protected function _initDefaultController()
{
$front = Zend_Controller_Front::getInstance();
$front->addModuleDirectory(APPLICATION_PATH . '/modules/');
$front->setControllerDirectory(array(
'default' => '../application/controllers',
'admin' => '../application/modules/admin/controllers',
'comment' => '../application/modules/comment/controllers',
'message' => '../application/modules/message/controllers',
'project' => '../application/modules/project/controllers',
'todo' => '../application/modules/todo/controllers',
));
}

i jak zmienię klasę kontroleru (/application/controllers/ErrorController.php) ErrorController na Default_ErrorController to gra.

konto usunięte

Temat: Moduły w ZF

Odnośnie modułów, to w Bootstrap.php daję:

protected function _initAutoload()
{
$moduleLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH));

return $moduleLoader;
}


natomiast w application.ini mam 3 magiczne linijki:

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules = "[]"


I bez żadnej zmiany kodu moge swobodnie dodawać kolejne moduły. Kontrolery modułu default standardowo siedzą w application/controllers, ich klasy nie mają żadnego prefiksu. Pozostałe moduły w application/modules/, nazwy klas zawierają prefiks.Patrycjusz Omiotek edytował(a) ten post dnia 19.04.10 o godzinie 21:10
Wojciech Andruszkiewicz

Wojciech Andruszkiewicz Inżynier
oprogramowania -
Melog.com Sp. z o.o.

Temat: Moduły w ZF

Ja mam podobnie, ale trochę inaczej, gdyż chciałem, aby Default nie siedział bezpośrednio w application, ale w modules/default/ i tam miał kontrolery i widoki, zaś modele chciałem mieć wspólne dla wszystkich modułów w jednym folderze application/models/, jakby coś, to poniżej główny fragment kodu:

    protected function _initDefaultBootstrap() {
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH,
'resourceTypes' => array(
'model' => array(
'path' => 'models',
'namespace' => 'Model',
),
'form' => array(
'path' => APPLICATION_PATH.'/modules/default/forms',
'namespace' => 'Form',
),
)
));
return $autoloader;
}

protected function _initAdminBootstrap() {
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Admin',
'basePath' => APPLICATION_PATH.'/modules/admin',
'resourceTypes' => array(
'model' => array(
'path' => 'models',
'namespace' => 'Model',
),
'form' => array(
'path' => APPLICATION_PATH.'/modules/admin/forms',
'namespace' => 'Form',
),
)
));
return $autoloader;
}
Wojciech Andruszkiewicz edytował(a) ten post dnia 19.04.10 o godzinie 22:40

konto usunięte

Temat: Moduły w ZF

Wojciech Andruszkiewicz:
Ja mam podobnie, ale trochę inaczej, gdyż chciałem, aby Default nie siedział bezpośrednio w application, ale w modules/default/ i tam miał kontrolery i widoki, zaś modele chciałem mieć wspólne dla wszystkich modułów w jednym folderze application/models/, jakby coś, to poniżej główny fragment kodu:

Również trzymam modele w jednym folderze, natomiast moduł default zostawiłem jak jest (bezpośrednio w application), bo trzymam tam tylko kontrolery Index, Error oraz Auth - a pozostałe siedzą w odpowiednich dla siebie modułach :-)

konto usunięte

Temat: Moduły w ZF

Dzięki za odpowiedzi. Zastanawia mnie tylko dlaczego trzymacie modele tylko w jednym folderze? I jakie nadajecie prefiksy klas żeby je rozróżniać?

konto usunięte

Temat: Moduły w ZF

Kamil Kuźmiński:
Dzięki za odpowiedzi. Zastanawia mnie tylko dlaczego trzymacie modele tylko w jednym folderze? I jakie nadajecie prefiksy klas żeby je rozróżniać?

Stosuję prefiks Model_ oraz trzymam klasy modeli głównie ze względu na integrację Doctrine i testy bez tego miałem problemy z autoloaderem i nie chciało mi się tego rozwiązywać :P



Wyślij zaproszenie do