Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana] Struktura kontrolerów
m87
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 4
Dołączył: 5.07.2008

Ostrzeżenie: (0%)
-----


Chciałbym pod Kohaną zrobić prostego CMSa, nie jestem tylko pewny czy dobrze zaplanowałem kontrolery. Pomysł jest taki:

application/controllers/site.php - rozszerza Template_Controller'a, ustawia widok strony głównej (menu, stopka, itd.)
Dla każdej podstrony robię osobny kontroler, który rozszerza Site_Controller'a i ustawia widok podstrony wstawiony gdzieś w środku widoku strony głównej.

application/controllers/admin.php - rozszerza Template_Controller'a, ustawia widok panelu administracyjnego.
Do katalogu application/controllers/admin wrzucam kontrolery odpowiadające za dodawanie newsów, userów itd, każdy rozszerza Admin_Controller'a.

To powinno działać tak:
domena.pl/ - strona główna, czyli to co jest w Site_Controllerze (application/controllers/site.php)
domena.pl/kontakt - jakaś podstrona, Kontakt_Controller (application/controllers/kontakt.php)
domena.pl/admin - strona główna panelu, Admin_Controller (application/controllers/admin.php)
domena.pl/admin/news - zarządzanie newsami, News_Controller (application/controllers/admin/news.php)

Czy to jest dobre rozwiązanie, czy powinno się to robić jakoś inaczej? Nie mam doświadczenia we frameworkach, więc pytam żeby potem nie przepisywać połowy kodu (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Może wszystkie kontrolery i widoki panelu administracyjnego powinny być zrobione jako moduł albo leżeć w katalogu system? Panel będzie uniwersalny, dla wielu różnych stron, ale w 90% wszędzie taki sam - to które funkcje panelu są włączone będzie zapisane jedynie w bazie danych.

Może ktoś robił coś podobnego pod Kohaną i podzieli się doświadczeniami? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Z góry dzięki za wszystkie rady (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
m87
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 4
Dołączył: 5.07.2008

Ostrzeżenie: (0%)
-----


Cytat
Hmm a nie lepiej po prostu napisać kontrolera 'Admin' a funkcje w nim nazwać add_user, del_user etc. Dzięki Kohanie uzyskasz wtedy bardzo ładne i wygodne linki smile.gif.


W panelu będę mieć w sumie sporo takich 'modułów': users, news, articles, menu, files. Właściwie każdy z nich będzie miał akcję add, delete, edit, niektóre coś więcej. To tylko te podstawowe, do tego dojdą jeszcze jakieś specyficzne dla konkretnego klienta. Wydaje mi się, że chyba jednak warto to rozbić na osobne kontrolery.

Cytat
Jeśli tworzysz coś dość prostego - może wystarczy zaimplementować takie proste rozwiązanie? smile.gif.
template.php
  1. <?php echo $header; ?>
  2. <?php echo $content; ?>
  3. <?php echo $footer; ?>


Właściwie tak samo chciałem to zrobić, z tym wyjątkiem, że template.php jest już obudowany w cały szablon HTML, czyli to co będzie takie same na podstronach. Ewentualne osobne widoki np. z menu wyłącznie ze względu na wygode w edytowaniu tych szablonów (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Cytat
Jeśli dobrze zrozumiałem planujesz wysłać poprzez Ajax od razu otoczone HTML'em dane - rozwiązanie takie jest nieco prostsze niemniej jeśli oczekujesz wysokiej szybkości/odwiedzalności może lepiej wysłać poprzez Ajax same dane a następnie poukładać je na stronie już za pomocą samego JS [nawiązując do zasady wykorzystuj moc obliczeniową komputera usera jak tylko możesz ;] ]. Serwer powinien nieco na tym odciążyć smile.gif.


Hmm, planowałem przez Ajax wysłać dane otoczone XML (lub JSON, ale dopiero niedawno sprawdziłem jak to w ogóle wygląda (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ).
Model pobiera zawartość katalogu, którego chciał kontroler i kontroler wsada te dane w widok, który wyglądałby w ten sposób:

  1. <root>
  2. <?php foreach ($directories as $dir) { ?>
  3. <directory>
  4. <name><?php echo $dir['name'] ?></name>
  5. <created><?php echo $dir['created'] ?></created>
  6. <modified><?php echo $dir['modified'] ?></modified>
  7. </directory>
  8. <?php } ?>
  9. <?php foreach ($files as $file) { ?>
  10. <file>
  11. <name><?php echo $file['name'] ?></name>
  12. <size><?php echo $file['name'] ?></size>
  13. <created><?php echo $file['name'] ?></created>
  14. <modified><?php echo $file['name'] ?></modified>
  15. </file>
  16. <?php } ?>
  17. </root>


Taki plik XML leci przez AJAXa do JavaScriptu, który już sobie obrabia te dane w HTMLa jak chce (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

W taki sposób robiłem to do tej pory. Nie korzystałem z żadnej klasy PHP do AJAXa, miałem zwykły skrypt który generował XMLa. Od strony JavaScriptu korzystałem z JQuery do otworzenia zapytania i potem parsowania otrzymanego XMLa. Przyznam, że jeszcze dokładnie nie zagłębiłem się w Xajax, ale czy to będzie w moim przypadku pomocne? Chciałem po prostu w Kohanie sprawdzić czy zapytanie przyszło przez AJAXa, a potem wyrenderować odpowiedni XML. Funkcje w JS żeby to wszystko ładnie wyglądało i działało to już i tak sobie sam napiszę.

Z tego co widziałem na pierwszy rzut oka, dzięki Xajaxowi mogę przerzucić to co normalnie pisałbym w JS do PHP:

  1. <?php
  2. $objResponse->assign("SomeElementId","innerHTML", $newContent);
  3. ?>


Standardowo skrypt PHP zwróciłby mi wartość $newContent, a potem w JS ustawiłbym ją jako innerHTML jakiegoś elementu. Tutaj już w PHP piszę co ma się stać z wartością.

Tylko to chyba i tak nie załatwi mi takich rzeczy jak np. sortowanie plików w tabelce czy zaznaczanie plików. Ale może się mylę?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 05:00