![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 3 Dołączył: 8.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam tutaj kod PHP odpowiadający za wyśietlenie określonych rekordów z bazy danych, których ilość na stronie jest limitowana również rekordem z bazy danych. Chodzi mi o to, że w pliku widoku chcę umieścić przycisk "wyświetl więcej" i po kliknięciu tego przycisku przeładowuje się strona i ilość wyświetlanych rekordów zwiększa się o 10. Przy kolejnym kliknięciu ma się dziać dokładnie to samo. Nie mam pojęcia jak zrobić to w Zendzie. W jaki sposób mam zmodyfikować ten kod PHP, aby po klknięciu w link zmienić zmienną $limit o +10 i w jaki sposób wysłać to w pliku wyglądu? Będę wdzięczny za wszelkie wskazówki. Pozdrawiam
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 6 Dołączył: 19.12.2010 Skąd: Krzyżanowice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Nie jestem pewien, czy paginator to akurat to, czego Ravik potrzebuje
![]() Przede wszystkim: 1. Pobranie danych z bazy to zadanie dla modelu 2. Link więcej to po prostu link do tej samej akcji z dodatkowym parametrem: page.com/module/controller/action/more/1 Obsługujesz to w kontrolerze tak:
A w modelu tworzysz metodę z parametrem more:
Ale ja bym najlepiej to widział tak, że po prostu ajaxem to doładowujesz, bez przeładowywania strony. Chyba, że zależy nam mocno na liczbie odsłon. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 3 Dołączył: 8.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
A czy potrzeba dopisać do tego linku routing? I w jaki sposób odwołać się to tej funkcji? Tzn. jak to się robi, bo w Zendzie jestem kompletnie zielony. I dziękuję za odpowiedź.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim Zend_Db ma metodę limitPage() która za Ciebie odpowiednio preparuje limitowanie danych. Tylko pokazujesz która strona i ile wyników per page. W routerze możesz sobie ustalić maskę że strona to [1-9][0-9]. Reszta to już wedle życzenia w kontrolerze. Czy paginator do tego wykorzystać to już twoja sprawa w zależności od potrzeb.
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 3 Dołączył: 8.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Niech Wam Bóg w dzieciach wynagrodzi
![]() Niestety w żaden sposób tego pojąć nie mogę. W folderze modelu mam tylko pliki z kodem wyglądającym tak:
Tylko w kolejnych plikach zmienia się $_name i $_primary. W modelu nie ma ani jednej funkcji zwracającej lub pobierającej coś. Wszystko jest w plikach kontrolera. Plik który mi odpowiada za wyświetlanie tych rekordów wygląda tak:
Wygląda na to, że nie został tu poprawnie zastosowany model MVC i teraz nie mam pojęcia jak zastosować wiedzę, którą mi przekazaliście, bo zbyt dużo pojęcia o Zendzie nie mam. Będę wdzięczny z jakieś wskazówki dotyczące mojego problemu związanego z wyświetleniem dodatkowych 10 rekordów w funkcji newAction po klknięciu przycisku w widoku. Pozdrawiam |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat zbyt dużo pojęcia o Zendzie nie mam - zawsze można zajrzeć do dokumentacji, co prawda taka ona sobie ale lepsze to niż nic ![]() Dobrze montujesz zapytanie do bazy, musisz tylko przenieść to do modelu. Cytat Tylko w kolejnych plikach zmienia się $_name i $_primary. W modelu nie ma ani jednej funkcji zwracającej lub pobierającej coś. - name to nazwa tabeli a primary to klucz główny - zalecane jest, aby jedna tabela w bazie odpowiadała jednemu modelowi stąd takie kodowanie.Dlatego musisz dodać metodę (czy tam funkcję) do modelu:
A wywołać ją w kontrolerze:
Oczywiście do metody getData wstawiasz swoje zapytanie:
Taka jest mniej więcej logika tego. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 3 Dołączył: 8.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Kod, który podałeś mi do modelu wkleiłem do tej samej akcji, która odpowiada za wyświetlenie ogłoszeń na stronie głównej (od razu po jej załadowaniu). Czy zrobiłem to w dobrym miejscu?
plik AdvController.php
Plik modelu AdvertisementsTable.php wygląda tak:
Czy dobrze zrozumiałem Twój przekaz? I śmiem jeszcze prosić o informację w jaki sposób mam skonstruować link w pliku widoku, gdyż dokumentacja zenda jest dla mnie co najmniej dziwna, ale w wielu przypadkach pomogła. Dziękuję Ci Pilsener za dotychczasową pomoc i tak nawiasem mówiąc to zauważyłem, że chyba jako jeden z niewielu na forum nie wymądrzasz się w stylu "ja jestem najmądrzejszy masz tu link, twój problem jest zbyt prosty". Pozdrawiam |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Wygląda dobrze, jeśli działa to czego więcej chcieć?
Linki najlepiej tworzyć przy pomocy helpera url: 1 parametr - to tablica parametrów, przekazywanych w adresie 2 parametr - to nazwa routingu, dzięki temu możemy tworzyć własne routingi a potem je zmieniać dowolnie i nie musimy przepisywać wszystkich linków od nowa, wystarczy zmienić ustawienia routingu 3 parametr - to wykorzystywanie parametrów z aktualnego url, dzięki temu nie musisz ciągle wpisywać tych parametrów, które są już w url 4 parametr - to escapowanie znaków w url porzez urlencode Wszystkie parametry są opcjonalne. Trochę praktyki i dojdziesz co i jak. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat Renderuję plik promo.phtml do widoku odpowiadającego na stronę główną i ogłoszenia już się nie wyświetlają. Próbowałem kod z promo.phtml wkleić do pliku widoku strony głównej i to też nie pomagało. Co może być nie tak? - renderowanie widoku jak sama nazwa wskazuje - łączy go tylko ze zmiennymi przekazanymi przez kontroler, w widoku masz do dyspozycji tylko te zmienne, które zostały przekazane w danym kontrolerze/akcji.Czyli: jeśli renderujesz jakiś widok odpalając np. strona.pl/artykuly/pokaz - kontroler artykuły i akcję pokaż, to w tym widoku masz dostępne tylko te zmienne, które przekazujesz w kontrolerze artykuły i akcji pokaż. Można z tym sobie poradzić używając w widoku np. helpera action: - to po prostu wywoła jeszcze raz całą aplikację i wyświetli widok/widoki podpięte do tej akcji. Ale trzeba uważać, bo to obniża nam wydajność. Można też stworzyć akcję do przekazywania tych parametrów do widoku i wywoływać ją wiele razy. Dlatego używa się modeli - pobierasz dane w jednym miejscu a potem je tylko przekazujesz do odpowiednich kontrolerów i widoków. Jeśli chcesz mieć coś dostępnego w całym kontrolerze to użyj metody init - będzie ona wywoływana zawsze razem z kontrolerem a przekazane tam zmienne będa dostępne we wszystkich akcjach. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 3 Dołączył: 8.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ok, wszystko pięknie działa i chyba zacznę się mocniej przykładać do zenda bo to rzeczywiście całkiem ciekawy i fajny framework.
Dziękuję za pomoc. Pozdrawiam, Ravik |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tylko się nie przyzwyczajaj bo za ~4 miesiące będzie ZF2
![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 01:36 |