kaszpiro
Nowy użytkownik
Offline
Wiadomości: 22
|
 |
« : 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ć  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  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
Wiadomości: 406
|
 |
« 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
|
|
|
|
thejw23
NKTeam
Zaawansowany użytkownik
Offline
Wiadomości: 414
|
 |
« 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 
|
|
|
|
|
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
|
 |
« 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)  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 
|
|
|
|
|
Zapisane
|
|
|
|
|
Zepco
|
 |
« 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
Wiadomości: 406
|
 |
« 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
|
|
|
|
|
Zepco
|
 |
« 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. 
|
|
|
|
|
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
|
 |
« 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.  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 
|
|
|
|
|
Zapisane
|
|
|
|
|
Zepco
|
 |
« 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
|
 |
« 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 
|
|
|
|
« Ostatnia zmiana: 13 Marzec 2010, 20:14 wysłane przez Riu »
|
Zapisane
|
|
|
|
thejw23
NKTeam
Zaawansowany użytkownik
Offline
Wiadomości: 414
|
 |
« 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 
|
|
|
|
|
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
|
 |
« 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  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
Wiadomości: 414
|
 |
« Odpowiedz #12 : 14 Marzec 2010, 17:57 » |
|
nie, spoko - to taki zart tylko byl, ja na Twoim miejscu tez bym nie cytowal  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
|
|
|
|