Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Yii] podejście do tworzenia panelu administratora
Forum PHP.pl > Forum > PHP > Frameworki
janek5
Cześć, moje pytania dotyczą Yii (v 1.1), ale tak na prawdę ogólnego podejścia do tworzenia wiekszych aplikacji. Tak w skrócie:

  1. Tworzyć osoby moduł do panelu administratora czy trzymać wszystko w jednym miejscu?
  2. Co z modelami? Stworzyć jeden duży model i współdzielić go pomiędzy panel administratora i front (tylko nadpisywać metody rules(), beforeSave() itp.)? Czy tworzyć osobne modele dla frontu i administratora, co w przypadku, gdy taka sama metoda jest potrzebna i tu i tu?
  3. Typowe dla Yii, korzystacie ze scenariuszy czy tworzycie modele CFormModel i implementujecie własny zapis z wykorzystaniem modelu CActiveRecord dla poszczególnych formularzy? Czy jeszcze inne podejście?

Z góry dzięki za pomoc.
dado
I mnie bałaganu tym lepiej. Rozdzielaj co się da. Modele, Kontrolery. Oddzielny moduł to bardzo dobry pomysł. Do roboty!
Sephirus
ad 1. Zdecydowanie osobny moduł, kod frontu i admina nie powinien być wspólny - lepiej mieć tu niezależność
ad 2. Opcji jest wiele. Najlepiej moim zdaniem mieć to osobno. Ogólnie zasada jest taka, że front i admin to praktycznie dwie różne aplikacje działające na tych samych danych. Sposób prezentacji i używania tych danych może być dla tych dwu aplikacji zupełnie inny toteż wymagane są inne modele. Są one jednak kłopotliwe i na pewno będzie wiele metod identycznych i tu i tu. Najbezpieczniejszym (lecz wbrew DRY) sposobem są zupełnie osobne modele z powtarzającym się kodem. Możesz jednak pokusić się o jakieś dziedziczenie podstawowych metod używanych w obu modułach - na zasadzie ogólnego modelu i dwóch modeli z niego dziedziczących (jeden dla front i jeden dla admin).

Wspólne modele też nie są czystym złem ale może się jednak zdarzyć, że nadpisanie jakiejś metody pod front popsuje coś w admin itp itd...

ad 3. Nie znam - nie piszę smile.gif
Turson
Cytat(janek5 @ 6.12.2014, 23:56:19 ) *
Typowe dla Yii, korzystacie ze scenariuszy czy tworzycie modele CFormModel i implementujecie własny zapis z wykorzystaniem modelu CActiveRecord dla poszczególnych formularzy? Czy jeszcze inne podejście?

Gdy dane z kilku formularzy trafiają do jednego modelu (co jest normalne), scenariusze pozwalają odróżnić, o walidację którego formularza i jego pól chodzi. Jestem zwolennikiem tego rozwiązania.
JoShiMa
Korzystam z CFormModel i definiuję scenariusze dla różnych formularzy bazujących na tej samej tablicy w bazie (typowe na przykład dla usera gdzie masz formularz rejestracji, logowania i parę innych). W takim modelu tworzę metodę save jeśli zapis do bazy jest bardziej "fikusny" i tam za pomoca modelu (modeli) ActiveRecord zapisuję. Ale nie twierdzę, że to najlepsze podejście. Dopiero się uczę.

A jeśli chodzi o sam panel to wolę osobny moduł ze wstępnie wygenerowanymi za pomocą gii kontrolerami i widokami.
viking
Zależy co rozumiesz przez model. Czy active record, czy zwykłą encję - nazewnictwo z czasem ulegało zmianie ale w niektórych FW bywa jeszcze jednoznaczne. Jeśli encja reprezentuje zbiór danych z zewnątrz (BD, JSON, cache, cokolwiek) z mapowaniem np kolumna w bazie -> pole klasy z geterami/seterami to można spokojnie trzymać w module frontu. A już obsługę tego front/admin. Jeśli AR to IMO lepiej rozdzielić.
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.