![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 215 Pomógł: 19 Dołączył: 24.12.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
Witam
Chciałbym Was prosić o zdanie jak u Was to wygląda. Otóż mam swojego frameworka który zbudowany jest mniej wiecej w oparciu o schemat MVC. Aplikacja w katalogu app ma podkatalolgi controllers, models, helpers itd. Podoba struktura jest w katalogu system. Coś podobnie jak w kohanie. Ale mniejsza z tym pytanie moje brzmi w jaki sposób budujcie panel administracyjny do danej aplikacji opierając się o ten schemat. W chwili obecnej mam coś w stylu małego b2b, aplikacja wymaga zalogowania, więc prawdopodobnie zrobię tak, że jeśli logujący będzie miał rolę 'admin' to pokażą się dodatkowe zasoby dostepne dla niego w menu przy zachowaniu tego samego layoutu. Natomiast kontrolery, modele itd będa wrzucane do tych samych katalogów co dla innych userów. Ale zastanawia mnie sytuacja taka gdy będę chciał zrobić w oparciu o ten schemat np. cms-a lub tym podobne gdzie frontend i backend będzie zupełnie inny i nie powiązany. Czy wtedy robicie np katalog admin w a nim powielacie to samo co dla frontendu czyli np katalogi Kod app - controller - models .. cache config public system templates .... a potem w routerze dajcie jakieś datkowe reguły które przy wykryciu linku postaci np Kod http://project/admin/order/index odpalają kontroler order z akcja index ? czy może robicie tak że np. w takiej konfiguracji katalogów Kod app - controller - admin - models ..- admin .... dodajcie w podlatalogu controllers, models itp np podlatalog admin a w nim dopiero kontrolery, modele i inne pliki administracyjne aby dokonac rozdziału funkcjonalnego ? Tylko że tu jest problem zmiany już np. autoloaderów wszystkich plików bo są inne lokaliazje i szereg innych spraw jak np. to że jest ten sam frontcontroller, bootstrap (coś jak w zendzie) który będzie mi odpalał akcje niekoniecznie potrzebne dla administracji, odpalane jakieś dodatkowe viewHelpery itp. Generalnie chyba wiadomo o co mi chodzi, chciałbym usłyszeć Wasze zdanie i sugestie Będe wdzieczny za info pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Ja sobie przerobiłem Kohanę tak, że może bez problemy pracować z użyciem wielu aplikacji. Najistotniejszą zmianą było dodanie kolejnego "poziomu" w kaskadowej strukturze katalogów. Przykładowo: domyślnie Kohana pobiera dane konfiguracje z system/config/plik.php, dołącza application/config/plik.php. Ja dołożyłem jeszcze jeden poziom czyli dołączenie application/config/frontend/plik.php.
Podobne podkatalogi tworzę dla kontrolerów, widoków, logów... Jedynie modele są wspólne. Można rozważyć podział i modeli, ale na chwilę obecną nie było mi to potrzebne (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 215 Pomógł: 19 Dołączył: 24.12.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
Podobne podkatalogi tworzę dla kontrolerów, widoków, logów... Jedynie modele są wspólne. Można rozważyć podział i modeli, ale na chwilę obecną nie było mi to potrzebne (IMG:style_emoticons/default/smile.gif) Hmm czyli bardziej musiałbym się skłaniać do mojej drugiej propozycji, czyli podkatalogi np. admin w poszególnych katalogach. Dodanie ścieżek 'admin' do autoloaderów. Jeśli chodzi o templaki to używam smarty i w katalogu templates mam taki podział (coś ja kw zendzie): Kod layouts partials scripts - cart index.tpl - order add.tpl edit.tpl czy ewentualnie zrobić podatalog admin w templates i powielić tą samą strukturę czy może jakoś inaczej ? Choć inaczej za bardzo tego nie widzę. A jak rozwiązałeś kwestię routera i generowanych linków ? Dodałeś przed kontrolerem np. admin ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Hmm, ja metody do administrowania normalnie wrzucam w plik kontrolera. Jak mam powiedzmy użytkowników to jest normalnie Users/Action.class.php (kontroler), Users/Model.class.php (model) i Users/View.class.php (wyswietlanie). Kiedy mam zamiar dodać metodę do zarządzania (powiedzmy usuwanie) na początku klasy dopisuję public $adminMethods = array('Usuń użytkownika' => 'delete', 'Dodaj użytkownika' => 'add'); itd. Mój framework zajmuje się stworzeniem menu i innych rzeczy przydatnych do wygodnego adminsitrowania. (IMG:style_emoticons/default/winksmiley.jpg)
A delete i add to zwykłe metody w klasie. Z uprawnieniami też nie ma problemu bo u mnie wyglądają one w bazie tak że grupie lub userowi mogę przypisać uprawnienie do konkretnej klasy i metody. Jeśli chce zeby ktoś mógł dodać użytkownika to daję Users/add do jego tabeli uprawnień. Ten post edytował bim2 7.07.2010, 13:47:07 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 215 Pomógł: 19 Dołączył: 24.12.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
Hmm, ja metody do administrowania normalnie wrzucam w plik kontrolera. Jak mam powiedzmy użytkowników to jest normalnie Users/Action.class.php (kontroler), Users/Model.class.php (model) i Users/View.class.php (wyswietlanie). No tak oczywiście że dane akcje będą w kontrolerze, z tym że jeśli to będzie backed to będzie to osobny całkowicie kontroler, Ale takich kontrolerów może być wiele, więc chodzi tu już o podział jakiś funkcjonalny co jest do czego. Zakładając że będe miał kontroler Order zarówno dla usera jak i admina w backendzie więc nie wrzucę dwóch takich samych plików to katalogu controllers. Kiedy mam zamiar dodać metodę do zarządzania (powiedzmy usuwanie) na początku klasy dopisuję public $adminMethods = array('Usuń użytkownika' => 'delete', 'Dodaj użytkownika' => 'add'); itd. Mój framework zajmuje się stworzeniem menu i innych rzeczy przydatnych do wygodnego adminsitrowania. (IMG:style_emoticons/default/winksmiley.jpg) To będa osobne kontrolery u mnie dla fronendu i backendu. Do tworzenia menu mam odpowiednie viewHelpery. A delete i add to zwykłe metody w klasie. Z uprawnieniami też nie ma problemu bo u mnie wyglądają one w bazie tak że grupie lub userowi mogę przypisać uprawnienie do konkretnej klasy i metody. Jeśli chce zeby ktoś mógł dodać użytkownika to daję Users/add do jego tabeli uprawnień. Tu oczywiście tez nie ma problemu bo akcje mam zapisane w bazie i wykorzustuje to moduł acl do określania dostępu do danego kontrolera i akcji. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
To będa osobne kontrolery u mnie dla fronendu i backendu. Do tworzenia menu mam odpowiednie viewHelpery.
Bardzo mnie zaciekawiłeś tym zdaniem . Ponieważ sam przymierzam sie do podobnego projektu na kohana a nie mam pomysłu jak zabrać sie za budowę menu , możesz podać jakieś szczegóły ? Pozdrawiam |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Ponieważ sam przymierzam sie do podobnego projektu na kohana a nie mam pomysłu jak zabrać sie za budowę menu , możesz podać jakieś szczegóły ? Pytanie nie było skierowane do mnie, ale odpowiem: wystarczy, że dla każdej "aplikacji" będziesz miał osobny front controller. Ja stosuję taką strukturę katalogów: Kod --public_html ----admin ------index.php // front controller dla admina ----index.php // front controller dla sekcji użytkowej Konieczna będzie ingerencja w $config['site_domain'] w application/config/config.php - musisz ją dynamicznie modyfikować w zależności od aplikacji. Najprościej w każdym z front controllerów utworzyć jakąś stałą np. APPNAME (o wartości np. frontend lub backend), a potem skorzystać z warunku:
Jeśli później będziesz konsekwentnie korzystał z helperów (np. html::anchor() dla linków) to nie będziesz miał większych (żadnych?) problemów. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki phpion (IMG:style_emoticons/default/winksmiley.jpg)
ale chodziło mi o rozwiązanie jakie zastosował jajcarzd1 do budowy menu ,ale z tego co podałeś to również wnioskuje ze to następuje przez pobranie struktury katalogów oraz plików w app (IMG:style_emoticons/default/winksmiley.jpg) Ten post edytował gothye 8.07.2010, 13:20:37 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 215 Pomógł: 19 Dołączył: 24.12.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
Dzięki phpion (IMG:style_emoticons/default/winksmiley.jpg) ale chodziło mi o rozwiązanie jakie zastosował jajcarzd1 do budowy menu ,ale z tego co podałeś to również wnioskuje ze to następuje przez pobranie struktury katalogów oraz plików w app (IMG:style_emoticons/default/winksmiley.jpg) No ja nie jadę na kohanie tylko mówię o swoim własnym rozwiązaniu (IMG:style_emoticons/default/smile.gif) więc trudno cokolwiek mi tu polecać. Pytanie nie było skierowane do mnie, ale odpowiem: wystarczy, że dla każdej "aplikacji" będziesz miał osobny front controller. Ja stosuję taką strukturę katalogów: Kod --public_html ----admin ------index.php // front controller dla admina ----index.php // front controller dla sekcji użytkowej Konieczna będzie ingerencja w $config['site_domain'] w application/config/config.php - musisz ją dynamicznie modyfikować w zależności od aplikacji. Najprościej w każdym z front controllerów utworzyć jakąś stałą np. APPNAME (o wartości np. frontend lub backend), a potem skorzystać z warunku:
Hmm czyli mówisz że wszędzie dodawałeś podkatalogi dla backendu dlla kontrolerów, widoków itp. ale jeśli chodzi własnie o sterowanie to mówisz że masz osobny frontcontroller ? Teraz się tak właśnie zastanawiam czy nie zrobić tego w ten sposób że mojej strukturze nie dodać jednak katalogu admin z osobnym plikiem index.php i będzie ona wyglądać tak: Kod - admin index.php -app - controllers - helpers - models class.bootstrap.php -cache -config -libraries -public -system -templates -templates_c index.php i w nim będe odpalał drugi plik froncontroller-a dla panelu administracyjnego. Tylko się zastanawiam czy dodawać dodatkowe katalogi w ten sposób (czyli osobny admin dla kazdego katalogu): Kod - app - controllers - admin - helpers - admin - models - admin a może w ten sposób: Kod -app - admin - controllers - models - helpers - controllers - helpers - models albo jednak w ogóle stworzyć osobny katalog app w katalogu admin: Kod - admin -app - controllers - helpers - models class.bootstrap.php index.php -app - controllers - helpers - models class.bootstrap.php -cache -config -libraries -public -system -templates -templates_c index.php z osobnym bootstrapem gdzie inicjuję sobie różne rzeczy plus może osobny templates, config. Sam już nie wiem na co się zdecydować Ten post edytował jajcarzd1 9.07.2010, 08:06:25 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Sposób organizacji katalogów to już Twoja sprawa, zrób jak Ci wygodniej. Pamiętaj tylko, że część plików powinna byś wspólna dla obu aplikacji (np. konfiguracja) ale z możliwością nadpisania dowolnej wartości.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 215 Pomógł: 19 Dołączył: 24.12.2003 Skąd: Przemyśl Ostrzeżenie: (0%) ![]() ![]() |
Sposób organizacji katalogów to już Twoja sprawa, zrób jak Ci wygodniej. Pamiętaj tylko, że część plików powinna byś wspólna dla obu aplikacji (np. konfiguracja) ale z możliwością nadpisania dowolnej wartości. No chyba jednak tak zrobię że zastosuję powielenie katalogów m.in. aplikacji (app), templaków. Wspólny pewnie pozostanie katalog system z bazowymi kontrolerami, modelami itp., libraries. Będe musiał pomyśleć chyba właśnie o tej konfiguracji bo obecnie mam w katalogu config plik konfiguracyjny w wiekszości ze stały zawierającymi różne ścieżki, dane dostępowe do bazy itp, więc albo powiele ten katalog z plikiem, wpakuję do admina który dostosuję do backednu, albo rzeczywiście będe zaczytywał oryginalny i drugi w kórym bede nadpisywał tylko wartości takie jakie chce mieć w adminie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 04:35 |