Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Subfoldery Controllerów
Forum PHP.pl > Forum > PHP > Frameworki
Damiankossek
Witam,

Mam pytanie, jak wy rozwiązaliście w Zendzie problem Panelu Administacyjnego ?

W Kohanie miałem zrobione tak że Controllery od backendu miałem ładnie w folderze backend i wchodziło się do nich poprzez adres:

http://strona.pl/backend/news

I mogłem ładnie sobie szybko i prosto dodawać nowe moduły poprzez stworzenie nowego pliku w folderze backEnd ... Wydawało mi się to bardzo wygodnym rozwiązaniem.
Natomiast teraz przesiadłem się na Zenda i mam problem z subfolderami. Jak wygląda sprawa controllerów w subfolderach ?

Może macie jakieś inne ciekawe rozwiązania co do PA ?
darko
Zend ma określoną konwencję nazewniczą klas (która ułatwia zlokalizowanie odpowiedniego pliku), a autoloader i odpowiednia konfiguracja w głównym Bootstrapie załatwiają sprawę. Nie odpowiem Ci konkretnie na Twoje pytanie, bo nie wiem czy masz w projekcie zastosowaną budowę modułową?
Damiankossek
No wlasnie jestem na etapie teoretycznego projektowania aplikacji chciałbym zapytać o wasze propozycje

Myśle aby rozwiązać to w ten sposób ze controllery od backendu trzymam w osobnym folderze:

- Controllers (katalog)
-- IndexContoller
-- ArticlesController
--- backend (katalog)
---- IndexContoller
---- ArticlesController

No i jak widać w folderze Controllers mam controllery od frontendu i katalog backend w którym beda controllery od wlasnie administracji. Rozwiazanie wydaje mi sie o tyle fajne ze każdy moduł ma swój osobny Controller, model i widok wiec w przyszłości mozna szybko i prosto rozbudować aplikacje poprzez stworzenie odpowiednich plików i uaktywnienia modułu w bazie. Jakie plusy i minusy ma taka koncepcja ? Moze macie jakieś lepsze pomysły ?

P.S przepraszam jeżeli zbytnio zszedlem z tematu
pgrzelka
-public
-library
-app
--layouts
--plugins
--configs
--modules
---default
----controllers
----views
----models
---backend
----controllers
----views
----models
---inny_modul
----controllers
----views
----models
--Bootstrap.php

ja używam takiej struktury
Damiankossek
Też już zrobiłem taki podział smile.gif Fajnie to wszystko działa, miałem małe problemy z instalacją Zend Toola na Mac OS ale sobie poradziłem tymi komendami:

sudo pear channel-discover pear.zfcampus.org
sudo pear install zfcampus/zf-devel

Źródło: http://raphaelstolt.blogspot.com/2009/01/i...n-mac-os-x.html
Eagle
Ja wszystkie akcję związane z artykułami wrzucam do jednego kontrolera, nie robię podziałów na admin/backend etc.
Dzięki temu wszystko jest w jednym miejscu i nie trzeba nigdzie szukać smile.gif
Damiankossek
Ja preferuje podzial poniewaz latwiej we wszystkim sie polapac, a tym bardziej budowa modulowa. Wszystkim bardziej i lepiej da sie zarzadzac a juz nie mowie o prostocie rozszerzania aplikacji ... smile.gif
Eagle
Oczywiście jest budowa modułowa wink.gif
Nie wrzucam wszystkich rzeczy do /app/controllers tongue.gif

-app
-- [...]
-- app/modules
--- article
---- controllers
---- controllers/IndexController - głównie CRUD
---- controller/TagsController - tagi
---- controller/CosinnegoController - inne rzeczy związane z artykułami

--- user
---- controllers
---- controllers/IndexController - CRUD
---- controllers/AclController - zarządzanie uprawnieniami

etc etc
Damiankossek
A no to tak smile.gif Myślałem że wszystko pakujesz do app/controllers wink.gif A możesz powiesz jak radzisz sobie z routingiem ?

Bo linki w stylu http://strona/articles/index/show/id/1 nie są za przyjemne smile.gif

Wolałbym to skrócić na styl http://strona.pl/articles,show,id,1

A zależy mi właśnie na budowie modułowej, bo gdybym wszystko pakował do defaulta to problemu nie ma smile.gif Ale każdy moduł = osobny folder. A tworzenie osobnego Controllera dla jednej metody mija się z celem no ale właściwie ... smile.gif
Eagle
  1. $route = new Zend_Controller_Router_Route_Regex(
  2. '(.+)-a(\d+)',
  3. 'module' => 'article',
  4. 'controller' => 'index',
  5. 'action' => 'show'
  6. ),
  7. 1 => 'desc',
  8. 2 => 'id'
  9. )
  10. );
  11. $router->addRoute('article', $route);


Kod dość stary ale powinien działać (sporadycznie zdarza mi się używać innego routingu)

link wygląda tak: example.com/to_jest_jakis_tytul_artykulu-a20

a20, to ID=20 smile.gif
Damiankossek
No wszystko śmiga ładnie, napisałem sobie w bootstrapie metodę która pobiera routes z zewnętrznego pliku smile.gif

application/modules/articles/boot.php

a w nim mam metodę buildRoutes i która ułatwia mi zarządzanie linkami, bezpotrzeby majstowania w bootstrapie smile.gif

Dzięki !
darko
Z Zendem jest właśnie ten problem, że nie ma stałego układu struktury plików (i najprawdopodobniej z założenia nigdy nie będzie). Co więcej, każdy projekt ma inną strukturę i czasami trudno się do pewnych rzeczy przyzwyczaić. Jedyne, co można znaleźć na ten temat, to konwencjonalna struktura folderów w projektach o budowie modułowej:

-docroot/
--index.php
-application/
--default/
---controllers/
----IndexController.php
----FooController.php
---models/
----views/
-----scripts/
------index/
------foo/
-----helpers/
-----filters/
--blog/
---controllers/
----IndexController.php
---models/
---views/
----scripts/
-----index/
----helpers/
----filters/
--news/
---controllers/
----IndexController.php
----ListController.php
---models/
---views/
----scripts/
-----index/
-----list/
----helpers/
----filters/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.