Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Diabl0, dodany: 06.10.2009 11:53, tagi: zend_framework

paginator Ostatnio dłuższy czas nic na blogu nie pisałem, ale to dlatego że w pracy siedzimy głównie nad rozbudową oraz dopracowywaniem obecnych rozwiązań to głównie programowanie ogranicza się do tworzenia kolejnych list, zestawień itp. Niestety nie jest to ani nic skomplikowanego, nietypowego czy stawiającego jakiekolwiek wyzwania. Dlatego aby nie zapomnieć o blogu i coś w końcu napisać tym razem opiszę zastosowanie w praktyce Zend_Paginatora

Diagram użytych w przykładzie tabel

Diagram użytych w przykładzie tabel

W prawie każdym projekcie istnieją listy, zestawienia, raporty itp. W dobrym guście (nie wspominając o wygodzie) jest aby listy te były sortowalne, i w przypadku większej ilości danych podzielone na strony (chociaż tu mój szef ma ostre obiekcje i zawsze chce wszystkie rekordy (często nawet kilka tysięcy) na jednej stronie).

Do tworzenia takich właśnie list został stworzony Zend_Paginator. Poniżej natomiast przedstawię moje podejście do jego praktycznego i dość elastycznego wykorzystania.

Zaczniemy sobie od stworzenia problemu – w końcu na nich najszybciej się człowiek uczy (podobno ;) ). Załóżmy że mamy prosty blog i 2 tabele – posty i autorzy oraz proste zadanie – wyświetlić listę/wyszukiwarke postów

Zacznijmy więc od stworzenia sobie kontrolera:

<?php

class test_ListsController extends Zend_Controller_Action
{

	/**
	 * Index
	 */
	public function indexAction ()
	{

		$postsModel = new test_models_Posts( );

		// Czyścimy sobie dane otrzymane z GET/POST
		$params = $this->_parseSearchParams( $this->getRequest()->getParams() );

		// Tworzymy formę wyszukiwania
		$searchForm = new test_forms_SearchForm( );
		$searchForm->setAction( '/test/lists/index' );
		$searchForm->setDefaults( $params );

		$this->view->searchForm = $searchForm;

		// Przekazujemy otrzymane parametry do widoku - jeszcze nam się przydadzą
		$this->view->params = $params;

		// Pobieramy selecta na którym będziemy bazowali
		$select = $postsModel->prepareFetchAllSelect( $params );

		// Przypisujemy selecta do paginatora
		$paginator = new Zend_Paginator( new Zend_Paginator_Adapter_DbTableSelect( $select ) );

		// Ustawiamy aktualną stronę na której jesteśmy (domyślnie 1)
		$paginator->setCurrentPageNumber( $this->getRequest()->getParam( 'page', 1 ) );

		// Ustawiamy ilość rekordów na stronę
		$paginator->setItemCountPerPage( $params[ 'perPage' ] );

		$this->view->paginator = $paginator;
	}

	/**
	 * Czyści i poprawia tablicę parametrów dla wyszukiwania
	 *
	 * @param array	$params	 tablica parametrów GET/POST
	 * @return array			   poprawiona i wyczyszczona tablica parametrów
	 */
	private function _parseSearchParams ( $params )
	{

		// Domyślnie chcemy wyświetlać po 5 rekordów na stronę
		if ( ! isset( $params[ 'perPage' ] ) ) {
			$params[ 'perPage' ] = 5;
		}

		// Domyślnie chcemy wyświetlać tylko aktywne posty
		if ( ! isset( $params[ 'active' ] ) ) {
			$params[ 'active' ] = 1;
		}		

		foreach ( $params as $key => $value ) {
			// Filtrujemy puste wartości
			if ( is_null( $value ) or $value == '' ) {
				unset( $params[ $key ] );
				continue;
			}

			switch ( $key ) {

				case 'module':
				case 'controller':
				case 'action':
				case 'submit':
					// Te dane nie będą nam potrzebne - usuwamy
					unset( $params[ $key ] );
					continue;
				break;

			}
		}

		return $params;
	}
}

Kod jest skomentowany i chyba nie wymaga większych wyjaśnień.

Pierwszą wartą wspomnienia rzeczą jest metoda _parseSearchParams(). Tam wydzielam wszelką logikę związaną z specjalnymi przypadkami filtrowania czy ustawiania wartości domyślnych dla danej listy (jak np. domyślne pokazywanie tylko aktywnych postów).

Idąc dalej trafiamy na formę test_forms_SearchForm – naszą wyszukiwarkę:

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: batman, dodany: 05.10.2009 19:10, tagi: zend_framework

Zend Framework dostarcza bardzo proste i łatwe w użyciu narzędzie do tworzenia projektów – Zend_Tool. Dzisiaj pokażę jak w kilku prostych krokach je uruchomić. Opis ten jest skierowany do użytkowników systemów operacyjnych Windows. Run zf.bat, run! By móc skorzystać z dobrodziejstw wiersza poleceń, musimy użyć polecenia zf. Niby nic wielkiego, ale dla wielu stanowi to duży problem. Najpierw

Autor wpisu: Vokiel, dodany: 03.10.2009 11:43, tagi: css, jquery, javascript

Przepraszamy, ten wpis dostępny jest wyłącznie w językach: English.

Autor wpisu: batman, dodany: 01.10.2009 18:09, tagi: javascript

Każdy kto miał okazję wycinać skomplikowany layout, zawierający dużo gradientów, zaokrąglonych rogów i nakładających się na siebie elementów, stosował przeźroczyste png. Nie ważą wiele i oferują ogromne możliwości. Jedynym minusem stosowania przeźroczystości w plikach png jest brak ich obsługi w zmorze programistów -  IE6. Wszystkie hack-i, fix-y i okrętki działały jedynie w określonych
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.