Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CI][CodeIgniter]codeigniter: wywoływanie funkcji z innego kontrolera
zephyr7
post 5.08.2011, 08:50:46
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
phpion
post 5.08.2011, 09:16:53
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(zephyr7 @ 5.08.2011, 09:50:46 ) *
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ł.

Cytat(zephyr7 @ 5.08.2011, 09:50:46 ) *
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.
Go to the top of the page
+Quote Post
zephyr7
post 5.08.2011, 10:02:36
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 3.11.2005

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


heheh, a wcale-bo-nie biggrin.gif

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
Go to the top of the page
+Quote Post
pedro84
post 5.08.2011, 10:20:25
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 smile.gif


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
jacobson
post 5.08.2011, 10:23:43
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.
Go to the top of the page
+Quote Post
el.pablo.72
post 5.08.2011, 10:25:18
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.
Go to the top of the page
+Quote Post
zephyr7
post 5.08.2011, 11:53:02
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!

Go to the top of the page
+Quote Post
jacobson
post 5.08.2011, 12:00:27
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...
Go to the top of the page
+Quote Post
phpion
post 5.08.2011, 17:03:40
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().
Go to the top of the page
+Quote Post
qrooel
post 5.08.2011, 21:50:12
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
Go to the top of the page
+Quote Post
szok
post 6.08.2011, 12:35:01
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 smile.gif

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.




--------------------
Go to the top of the page
+Quote Post
paxton
post 10.08.2011, 23:21:58
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ń)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:15