Polski support
KohanaPHP Framework
FORUM Polskiego Supportu KOHANA Framework
9 Wrzesień 2010, 02:01 *
Witamy, Gość. Zaloguj się lub zarejestruj.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: 18.10.2009 - wydanie 3.0.1
Strony: [1]   Do dołu
  Drukuj  
Autor Wątek: Dodawanie plików - model czy controller  (Przeczytany 394 razy)
kaszpiro
Nowy użytkownik
*
Offline Offline

Wiadomości: 22


Zobacz profil
« : 9 Marzec 2010, 16:28 »

Do tej pory w moim projekcie dodaję pliki graficzne poprzez funkcję znajdującą się kontrolerze. Np. Controller News posiada metodę addPhoto($newsId)
i tam dzieją się następnie wszystkie operacje polegające na przekształcaniu pliku graficznego, tworzeniu miniaturki i zapisywaniu go do odpowiedniego pliku i bazy. Czy nie powinienem przenieść tego do modelu ? Wydaje mi się, że zaśmiecam moje kontrolery kodem, który nie powinien się w nim znaleźć i źle pojmuję ideę istnienia modelu i kontrolerów właśnie. Teraz zaistniała potrzeba dodawania również innych plików (np. pdf) i przed przystąpieniem do dopisania takiej funkcjonalności chciałem zasięgnąć języka i upewnić się w przekonaniu, że robię to źle i trzeba to ASAP zmienić Uśmiech

Czy ma ktoś namiary lub chciałby sam udostępnić podgląd do kodu nawet niewielkiej aplikacji dobrze w Kohanej napisanej ? Wiem, że to może i dziwna prośba, ale taki sposób mógłby mi lepiej uświadomić miejsca, w których wciąż popełniam wiele błędów i robię sobie i swoim projektom seppuku Uśmiech Przykłady kodu z oficjalnej dokumentacji Kohanej są niestety często niekompletne i jakieś takie nieżyciowe, często pisane po prostu, żeby były.

P.S. Szkoda, że projekt Nasza Kohana umarł śmiercią naturalną...
Zapisane
phpion
NKTeam
Zaawansowany użytkownik
*
Offline Offline

Wiadomości: 406



Zobacz profil
« Odpowiedz #1 : 9 Marzec 2010, 16:45 »

Chyba nie ma na to jednoznacznej odpowiedzi. Takie rzeczy jak np. upload plików jedni robią w modelu, a inni w kontrolerze. Ja akurat robię to w kontrolerze, ale chyba jednak model będzie lepszym miejscem do tego celu. Można w nim zawrzeć metodę addFile(), która będzie robiła zadanie kompleksowo: uploadowała plik na serwer i dodawała rekord do bazy danych. Z drugiej strony nie jestem do końca przekonany czy aby na pewno przykładowy upload pliku jest zadaniem modelu... Również chętnie poznam zdanie innych osób.
Zapisane

Warsztat: Eclipse Helios PDT + PHP 5.3.2 + PostgreSQL 8.4 + Kohana 2.3.4

Problem rozwiązałem, temat do zamknięcia
thejw23
NKTeam
Zaawansowany użytkownik
*
Offline Offline

Wiadomości: 414



Zobacz profil WWW
« Odpowiedz #2 : 9 Marzec 2010, 19:39 »

a co to za roznica, nie ma raczej wiekszego znaczenia czy upload bedzie w modelu czy w kontrolerze - byle tylko nie byl raz tu, raz tam Uśmiech
Zapisane

devblog ... z wprowadzeniem i przykladami do Simple_Auth oraz Simple_Modeler.
tego uzytkownika (czasami) znajdziesz na kanale IRC: #kohanapl @ irc.freenode.net -> pchat
barat
Zaawansowany użytkownik
****
Offline Offline

Wiadomości: 356



Zobacz profil
« Odpowiedz #3 : 9 Marzec 2010, 20:57 »

Ja robię tak, że jak to jest tylko wysłanie pliku na serwer to po prostu robi to za mnie FORMO
Jeśli to jest zapisanie także info o pliku w bazie (np jego nazwa) to nadal formo uploaduje, ale do katalogu TMP, a następnie ja w modelu już się tym  plikiem zajmuję jak trzeba (zmiana rozmiaru, manipulacja, ewentualna zmiana nazwy, dorobienie miniaturki) Uśmiech
Zapewne to też nie jest idealne podejście, ale mi jest tak wygodnie.
Ale jak mówi kolega wyżej - ważne, żeby było konsekwentnie Uśmiech
Zapisane
Zepco
Administrator
Ekspert
*****
Offline Offline

Wiadomości: 936



Zobacz profil
« Odpowiedz #4 : 10 Marzec 2010, 15:27 »

IMHO lepiej żeby manipulacjami/przenoszeniem z odpowiednimi parametrami zajmował się helper/biblioteka. Bo można napisać ja na tyle uniwersalną, że będzie działać w całym serwisie bez niepotrzebnego powielania kodu w kontrolerze/modelu.

Zapisane

OŚWIADCZENIE: Ja, niżej podpisany, świadomy wszystkich konsekwencji tego posta postanawiam go dopuścić do użytku publicznego, albowiem bo gdyż aczkolwiek uważam, że nie wyrządzi on (znaczy: post) krzywdy nikomu innemu niźli mnie samemu (czyli autorowi posta).
-- Zepco --
(: nʞnʞ
phpion
NKTeam
Zaawansowany użytkownik
*
Offline Offline

Wiadomości: 406



Zobacz profil
« Odpowiedz #5 : 10 Marzec 2010, 16:57 »

Zgadzam się z Tobą Zepco, ale nadal pozostaje kwestia miejsca wywołania (przykładowego) uploadu. Czy powierzać to zadanie modelowi, czy robić to jeszcze w kontrolerze?
Zapisane

Warsztat: Eclipse Helios PDT + PHP 5.3.2 + PostgreSQL 8.4 + Kohana 2.3.4

Problem rozwiązałem, temat do zamknięcia
Zepco
Administrator
Ekspert
*****
Offline Offline

Wiadomości: 936



Zobacz profil
« Odpowiedz #6 : 10 Marzec 2010, 17:29 »

Z modelem jest o tyle wygodniej, że niezależnie od tego ile razy będzie wywoływany upload wykonuje sie tylko w jednym miejscu. Dodatkowo jeśli uploadowany obraz/plik ma parametry z bazy to też będzie łatwiej je przekazać do odpowiedniej funkcji jeszcze w modelu.
W zasadzie miejsce uploadu i nazwa pliku gdzieś ma pozostawiony ślad (np baza), a tym zajmuje się model.
Do tej pory robiłem to w kontrolerze, ale po głębszym zastanowieniu się nad tym co pisaliście lepiej to robić w modelu. Uśmiech
Zapisane

OŚWIADCZENIE: Ja, niżej podpisany, świadomy wszystkich konsekwencji tego posta postanawiam go dopuścić do użytku publicznego, albowiem bo gdyż aczkolwiek uważam, że nie wyrządzi on (znaczy: post) krzywdy nikomu innemu niźli mnie samemu (czyli autorowi posta).
-- Zepco --
(: nʞnʞ
barat
Zaawansowany użytkownik
****
Offline Offline

Wiadomości: 356



Zobacz profil
« Odpowiedz #7 : 10 Marzec 2010, 18:37 »

Z modelem jest o tyle wygodniej, że niezależnie od tego ile razy będzie wywoływany upload wykonuje sie tylko w jednym miejscu. Dodatkowo jeśli uploadowany obraz/plik ma parametry z bazy to też będzie łatwiej je przekazać do odpowiedniej funkcji jeszcze w modelu.
W zasadzie miejsce uploadu i nazwa pliku gdzieś ma pozostawiony ślad (np baza), a tym zajmuje się model.
Do tej pory robiłem to w kontrolerze, ale po głębszym zastanowieniu się nad tym co pisaliście lepiej to robić w modelu. Uśmiech

Chyba, że używasz formo - wtedy faktycznie upload nastąpi w kontrolerze - ale jeśli plik wyślesz do jakiegoś katalogu TMP to potem w modelu możesz sobie nim ładnie manipulować, zrobić co chcesz, zapisać tam gdzie chcesz, a następnie usunąć ten plik tymczasowy Uśmiech
Zapisane
Zepco
Administrator
Ekspert
*****
Offline Offline

Wiadomości: 936



Zobacz profil
« Odpowiedz #8 : 10 Marzec 2010, 18:56 »

Ale formo robi powiedzmy wstępny upload. Nie bardzo chcę, żeby były zapisywane oryginalne nazwy plików, lepiej jak to wszystko jest odpowiednio uporządkowane. W dodatku gdy trzeba mieć np kilka rozmiarów zdjęć łatwiej sobie przyjąć jakąś formę zapisu, żeby się później nie pogubić.
Zapisane

OŚWIADCZENIE: Ja, niżej podpisany, świadomy wszystkich konsekwencji tego posta postanawiam go dopuścić do użytku publicznego, albowiem bo gdyż aczkolwiek uważam, że nie wyrządzi on (znaczy: post) krzywdy nikomu innemu niźli mnie samemu (czyli autorowi posta).
-- Zepco --
(: nʞnʞ
Riu
Zaawansowany użytkownik
****
Offline Offline

Wiadomości: 253



Zobacz profil WWW
« Odpowiedz #9 : 13 Marzec 2010, 03:21 »

Moduł/helper w zależności co robię z uploadowanym obrazkiem/plikiem. Może być tam i model i obróbka, a wszystko w samym kontrolerze polega na wywołaniu i przekazaniu wartości. Jednocześnie może się to wiązać z naszym modelem, ale nie musi. Moduły dają nam uniwersalność, bo nie dosyć że w danym kontrolerze masz porządek, to poza tym korzytasz z danego modułu tam gdzie chcesz. Jeśli jest on uniwersalnie napisany i w przemyślany sposób, to możesz zaoszczędzić mnóstwo powtarzania. Nie powtarzaj się (zasada DRY - Don't Repeat Yourself).

Dokumentacja i przykłady w niej zawarte mają uczyć mechanizmów, sposobów myślenia/podejścia. Dlatego są czasami skromne.

Ghostdog - nie obraź się ale piszesz farmazony - wszystko i nic.

Edit: chyba chciałeś dosłownie nic kasując posta  Duży uśmiech
« Ostatnia zmiana: 13 Marzec 2010, 20:14 wysłane przez Riu » Zapisane

thejw23
NKTeam
Zaawansowany użytkownik
*
Offline Offline

Wiadomości: 414



Zobacz profil WWW
« Odpowiedz #10 : 14 Marzec 2010, 17:21 »

na wszelki wypadek chyba trzeba cytowac wiadomosc do ktorej sie odnosimy - po skasowaniu jej przez autora, nadal bedzie znana tresc posta z ktorym sie polemizuje Uśmiech
Zapisane

devblog ... z wprowadzeniem i przykladami do Simple_Auth oraz Simple_Modeler.
tego uzytkownika (czasami) znajdziesz na kanale IRC: #kohanapl @ irc.freenode.net -> pchat
Riu
Zaawansowany użytkownik
****
Offline Offline

Wiadomości: 253



Zobacz profil WWW
« Odpowiedz #11 : 14 Marzec 2010, 17:41 »

na wszelki wypadek chyba trzeba cytowac wiadomosc do ktorej sie odnosimy - po skasowaniu jej przez autora, nadal bedzie znana tresc posta z ktorym sie polemizuje Uśmiech
Przepraszam z offtopic. Musiałbym to wypracowanie (wykład) zacytować w całości, bo fragment by nic nie dał, a to nie stanowi części głównej tematu. Poza tym na tym forum rzadko się zdarza żeby ktoś odpowiedział w rozbudowany sposób po czym usunął swoją odpowiedź.
Zapisane

thejw23
NKTeam
Zaawansowany użytkownik
*
Offline Offline

Wiadomości: 414



Zobacz profil WWW
« Odpowiedz #12 : 14 Marzec 2010, 17:57 »

nie, spoko - to taki zart tylko byl, ja na Twoim miejscu tez bym nie cytowal Uśmiech to co zrobil ghostdog wydaje mi sie nieco dziwne, nie przypominam sobie aby wczesniej ktos skasowal wiadomosc do ktorej do ktorej nawiazuje kolejny post, tym bardziej, ze nie napisal nic specjalnego. przedstawil swoj poglad i tyle. moze nie radzi sobie z krytyka.
Zapisane

devblog ... z wprowadzeniem i przykladami do Simple_Auth oraz Simple_Modeler.
tego uzytkownika (czasami) znajdziesz na kanale IRC: #kohanapl @ irc.freenode.net -> pchat
Strony: [1]   Do góry
  Drukuj  
 
Skocz do: