Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MVC] Kontroler w kontrolerze
Forum PHP.pl > Forum > PHP > Object-oriented programming
markonix
Przykład struktury strony www.przyklad.pl:

- /dane/
- /dane/edytuj
- /dane/usun

Mam także:

- /admin
- /admin/uzytkownik
- /admin/uzytkownik/dodaj
- /admin/uzytkownik/usun
- /admin/uzytkownik/szukaj


Pytanie dotyczy pogrubionego. Czy stosuje się zagnieżdzenie kontrolerów?
Chciałbym (bo tak wg mnie jest natualniej) aby pod adresem /admin/uzytkownik uruchomił się konkretny kontroler.
Na ten moment kontrolerem jest "admin", a akcje wywołuje za pomocą adresu uzytkownik-dodaj, uzytkownik-szukaj czyli tak na około.
ShadowD
Powiem Ci jak to rozwiązuję w zend, tam są moduły - default obsługuje wszystko co nie zawiera nazwy modułu, a moduł admin przez "katalog" admin, czyli dokładnie tak jak oczekujesz przy czym modułu w zf są dosyć "przekombinowane" lecz w 2.0 (są już relasy) wszystko wraca do logicznego wyjścia tylko czekać na zf 2. :-)
Spawnm
Dodaj folder admin w którym będzie kontroler uzytkownik.
markonix
Po prostu w folderze controllers wrzucić folder admin?
Nie powiem, że to by było ciekawe rozwiązanie bo by troszkę zrobiło porządku w tym folderze.

No cóż, próbujemy (bez modyfikacji routera się nie obejdzie).

edit: Szczerze jakoś mi to nie idzie. Nie chce jakoś zbytnio komplikować kodu ale jedynie jak to widzę to sprawdzenie w momencie braku kontrolera czy przypadkiem nie jest folderem, jeżeli tak to musiałbym jakoś przemianować wszystko, żeby kontroler stał się nazwą folderu, akcja stała się kontrolerem, a pierwszy argument stał się akcję. Troszkę to pokomplikowane :/
viking
Tylko po co tak sobie życie komplikujesz wynajdując koło na nowo? Masz tyle gotowych rozwiązań że wystarczy je tylko użyć (frameworki). Jak nie chcesz całego to masz serię artykułów http://fabien.potencier.org/articles jak to zrobić na podstawie Symfony 2. Admin tutaj zdecydowanie jest oddzielnym modułem.
marcio
Cytat(markonix @ 9.04.2012, 22:29:42 ) *
Po prostu w folderze controllers wrzucić folder admin?
Nie powiem, że to by było ciekawe rozwiązanie bo by troszkę zrobiło porządku w tym folderze.

No cóż, próbujemy (bez modyfikacji routera się nie obejdzie).

edit: Szczerze jakoś mi to nie idzie. Nie chce jakoś zbytnio komplikować kodu ale jedynie jak to widzę to sprawdzenie w momencie braku kontrolera czy przypadkiem nie jest folderem, jeżeli tak to musiałbym jakoś przemianować wszystko, żeby kontroler stał się nazwą folderu, akcja stała się kontrolerem, a pierwszy argument stał się akcję. Troszkę to pokomplikowane :/

Poprostu zrob 2 rozne typy kontrolerow.
FrontController czyli np wlasnie admin/ home/ forum/
BlockController czyli mniejsze kontrolery czyli np rzeczy zwiazane z uzytkownikami, ewentualnie kazda akcje daj do innego pliku i trzymaj je w katalogu users/
by_ikar
To może być tak jak już napisali wyżej folder w którym wrzucisz te kontrolery, a mogą to być pojedyncze kontrolery. Nie wiem jak to w zendzie wygląda ale w takim symfony wystarczy prosta regułka dla routingu:

Kod
admin_user:
    url:    /admin/uzytkownik/:action
    param:  { module: adminUser }
    requierments: { action: dodaj|usun|szukaj }


I podobnie np w artykułach czy tam innych rzeczach. I wszystkie kontrolery dla admina mogą się zaczynać od admin z dodanym "prefiksem" danej rzeczy którą wykonuje dany kontroler. W tym wypadku zarządzanie użytkownikiem.

Albo jeszcze inaczej, stworzyć panel administracyjny, jako inna aplikacja, wtedy tylko będziesz robić kontrolery bez przedrostka admin. Opcji w sumie jest wiele wink.gif
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.