![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Może jest to moja nie wiedza odnośnie OOP, ale zależy mi też aby zrobić to poprawnie w Laraverze. mam taki układ controllerów: /controllers ---PagesController ---/Pages -------DefaultController plik DefaultController:
1. W jaki sposób w PagesController wywołać funkcję: createDefaultView?, wiem że jak dodam że jest to funkcja statyczna to mi zadziała: DefaultController::createDefaultView(), czy w przypadku Laravela powinno się robić to inaczej? Można jeszcze w inny sposób dostać się do tej funkcji nie używając static? 2. Jak funkcję createPortlet wywołać z Controllera głównego bo tam też ona się znajduje? //w controller.php jest jako public function createPortlet() Z góry dziękuję za pomoc ///////////// wszystko działa jeżeli funkcje pozamieniam na statyczne, ale czy to tak może być? Ten post edytował Randallmaster 29.07.2015, 18:22:24 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
1. Nie wywołasz metody dziecka z rodzica.
Albo musisz tworzyć instancje 'DefaultController' albo przekazać go jako dependency injection 2. Skoro dziedziczy po PagesController to zapewne tamten dziedziczy po Controller, więc tak jak masz. Nie za bardzo rozumiem i widzę co chcesz osiągnąć, bo struktura katalogowo plikowa jest kiepska |
|
|
![]() ![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Pyton_000 dzięki za odpowiedź.
Są jakieś standardy które mówią jak prowadzić strukturę plików? Może mógłbyś coś polecić. Co chcę osiągnąć. 'pages/edit' będzie dzieliła się na 5 tabsów, i te 5 tabsów chciałem rozbić na 5 różnych klas po 1 do każdego z taba. no i jedna główna classa czyli PagesController. Jak powinno wyglądać katalogowanie plików w takim przypadku? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma standardów. Układa się katalogi raczej w logiczne całości żeby miało ręce i nogi.
Co masz na myśli 5 tabsów? Panadol? Apap? Czy może te od Goździkowej ![]() Opisz co to ma robić, jakie są założenia to coś wymyślimy. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Panadol i Apap nie
![]() ![]() ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dobra ja już nie wnikam.
- createPortlet() wydziel do jakiejś innej klasy która będzie odpowiedzialna za tworzenie czegoś takiego z parametrów. Nie ma sensu pchanie wszystkiego do głównego kontrolera. - DefaultController nie musi w tym momencie dziedziczyć już po PagesController, wystarczy po Controller - Teraz w PagesController musisz odpalić sobie generowanie tych zakładek. Obiekty możesz przekazać jako parametry w konstruktorze klasy lub parametry metody:
Oczywiście nie zapomnieć o namespace |
|
|
![]() ![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Popraw mnie jeżeli źle zrozumiałem i zrobiłem poniższy przykład
Jeżeli zrobiłem to poprawnie, odpowiedz mi co jest wydajniejsze. Pierwszy przykład z tworzeniem instancji w konstruktorze czy funkcja statyczna + abstract class? Wydaje mi się że raczej funkcja statyczyna + (zmiana klasy na abstrakcyjną), ponieważ znajdować się tam będą funkcję podstawowe dla PagesController? Ten post edytował Randallmaster 30.07.2015, 07:36:47 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Wiesz, ja bym całkowicie olał te "podklasy" i to co one robią zostawił w głównym kontrolerze, a logikę zamieścił w jakimś repozytorium (Repositories).
Albo zamiast "tabów" oddielne kontrolery które będą odpalane samodzielnie. I wtedy odpalasz sobie np. PermissionsController który dziedziczy po PagesController (a ten po Controller) i tam sobie dłubiesz. Rzeczy w spólne będziesz miał w PagesController a indywidualne w konkretnej klasie. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie za pomoc, ostatnie pytanie orientacyjne
![]() i tak na szybko: po co tworzyć : protected $permission; jak i tak odwołuję się $this->permission->createDefaultView(); /raczej jest to w tej sytuacji nie potrzebne? Ten post edytował Randallmaster 30.07.2015, 08:33:37 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Żeby było ładnie. Pola się deklaruje (ułatwia to później czytanie)
Repozytorium ja trzymam w app/Repositories/ |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc
![]() |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
wstrzykiwanie kontrolerów do kontrolerów? To jakaś incepcja?
![]() ![]() -------------------- |
|
|
![]() ![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 677 Pomógł: 11 Dołączył: 18.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
tak na 4 poziomie
![]() ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:48 |