![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 3.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Od jakiegoś czasu (z musuuuu) pracuję w codeigniter i bez przerwy potykam się o dziwne rozwiązania:
Jak wywołać funkcję należącą do innego kontrolera? Na przykład, jak wywołać z kontrolera Admins funkcję z kontrolera Users, np. users::check_if_logged(); W ogóle, im dłużej pracuję z codeigniter, wydaje mi się coraz bardziej "lamerski"... Fatalne rozwiązania dot. szablonów, relacji w tabelach, itp. Czy w ogóle jest sens ciągnąć projekt w takim frameworku? Ten post edytował zephyr7 5.08.2011, 08:51:08 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Jak wywołać funkcję należącą do innego kontrolera? Na przykład, jak wywołać z kontrolera Admins funkcję z kontrolera Users, np. users::check_if_logged(); W CI nie ma możliwości wywołania metody innego kontrolera. Musiałbyś poszukać jakiś rozszerzeń - możliwe, że ktoś coś takiego napisał. W ogóle, im dłużej pracuję z codeigniter, wydaje mi się coraz bardziej "lamerski"... Fatalne rozwiązania dot. szablonów, relacji w tabelach, itp. Każdy framework jest taki, jak ten kto na nim pracuje. To, że metodę sprawdzająca czy użytkownik jest zalogowany (tak sądzę po jej nazwie) wpakowałeś do kontrolera to nie wina CI tylko Twoja. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 3.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
heheh, a wcale-bo-nie
![]() MVC polega na tym, że to kontroler łączy się z modelem, a model właściwie nie powinien robić nic innego, niż "dogadywanie się z bazą" więc, sens miałoby coś takiego: user::check_if_logged(); to z kolei łączyłoby się z modelem i podejmowało decyzję. CI wymaga wpakowania skryptu do modelu, który można wywołać np. autoloadem. Wporzo, ale już sama akcja przekierowania to zadanie kontrolera, a nie modelu... Można niby zrobić coś takiego: if (!$this->user->logged==true)redirect(); ale to trochę jak przez Ułanbator do Krakowa... pytałem, bo w Cake'u można użyć zmiennej var $uses i już... ps. czy w Kohanie jest to samo? Tzn. kiszka z layoutami i podobny problem z wywoływaniem kontrolerów? Ten post edytował zephyr7 5.08.2011, 10:03:39 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj o MVC, bo w ogóle tego nie rozumiesz, skoro dla Ciebie model ma się tylko dogadywać z bazą danych.
Framework to nie CMS, co to za sztuka dopisać jakiś moduł bazujący na RBAC (nie pamiętam czy CI coś takiego posiada)? Nie framework kiepski, tylko programista co go używa ![]() -------------------- Google knows the answer...
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 468 Pomógł: 36 Dołączył: 14.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
wedlug mnie funkcje takie "wielokrotnie" uzywane jak to ktore przedstawiles powinienes wlozyc do jakiejs biblioteki wlasnej i wywolywac do woli ladujac odpowiednia biblioteke.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 1.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Najpierw poczytaj o modelu MCV, a później pracuje z CI. Niestety brakuje Tobie podstawowej wiedzy.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 3.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Poczytam, poczytam... Chodziło mi o to, że najczęściej model odpowiada za warstwę danych, natomiast kontroler steruje programem.
Ale gdyby mnie ktoś mógł w kilku zdaniach oświecić, byłbym niewymownie wdzięczny! |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 468 Pomógł: 36 Dołączył: 14.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
no to mowie Ci zobacz w google "codeigniter libraries" stworz sobie biblioteke z Twoimi funkcjami ktore mozesz wywolywac wszedzie...
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Nie możesz po prostu utworzyć abstrakcyjnej klasy nadrzędnego kontrolera, po którym będą dziedziczyć pozostałe? Zawrzesz w nim wówczas metodę sprawdzającą status zalogowania użytkownika oraz ewentualne przekierowanie, po czym będziesz ją wywoływał w kontrolerach dziedziczących poprzez zwykłe $this->check_if_logged().
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 306 Pomógł: 42 Dołączył: 25.03.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Zwyczajny helper sobie napisz, albo bibliotekę na 10 linijek i już będziesz miał to o co Ci chodzi. Nie mów źle o CI, bo to porządny FW. ;-)
-------------------- Strony WWW: http://arscreo.pl
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Chcesz mieć takiego metody do wywołania do napisz sobie bibliotekę, pisze się je banalnie
![]() Co do logowania to proponuje zrobić sobie MY_Controller i po nim kontrollery będą dziedziczyły. Informacji w sieci jest mnóstwo. A to samego logowania użyć jakieś biblioteki Auth, których też w sieci jest mnóstwo. -------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 22.06.2009 Skąd: Londyn, UK Ostrzeżenie: (0%) ![]() ![]() |
CodeIgniter jest dobry ale nie w standardowej wersji, trzeba go sobie trochę samemu ulepszyć.
Da się oddzielać kod do tz. modułów jest od tego HMVC i istnieje do tego biblioteka pod CodeIgniter, druga sprawa to dodać DataMapper dostepny na ich forum, nie będziesz mieć problemów z relacjami. Stworzyć własna bibliotekę Auth lub ściągnąć już jedna z wielu istniejących. Oraz zainstalować Sparks (Automatyczne ściąganie i instalowanie bibliotek poprzez linie poleceń) |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:15 |