Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework] Dorobienie przycisku "wyświetl więcej"
Ravik
post
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

  1. function newAction() {
  2.  
  3. $db = Zend_Registry::get('db');
  4. $db->setFetchMode(Zend_Db::FETCH_OBJ);
  5.  
  6. $settings = new SettingsTable;
  7. $limit = $settings->fetchRow('title = "newLimit"'); // limit pobierany z bazy danych i na tej podstawie jest określona liczba ogłoszeń, które mają się pojawiać na stronie
  8.  
  9. $select = $db->select();
  10. $select->from('advertisements', array('id', 'areaSize', 'price', 'description', 'city', 'announceDate', 'promo'))
  11. ->joinInner('propertyTypes', 'propertyTypes.id = advertisements.propertyType', 'type as propertyType')
  12. ->joinInner('advertisementTypes', 'advertisementTypes.id = advertisements.advertisementType', 'type as advertisementType')
  13. ->joinInner('provinces', 'provinces.id = advertisements.province', 'province')
  14. ->joinLeft('images', 'images.advertisementId = advertisements.id', 'image')
  15. ->where('dayCounter > 0')
  16. ->group('id')
  17. ->limit($limit->value, 0);
  18.  
  19. $result = $db->query($select);
  20. $this->view->advertisements = $result->fetchAll();
  21. $this->view->hideBack = 1;
  22.  
  23. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post
Post #2





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:
  1. echo $this->action('action','controller','module');
- 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.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 4.10.2025 - 08:08