Klasy pomocników W skryptach widoków często potrzebne jest przeprowadzanie złożonych funkcji; na przykład formatowanie daty, generowanie elementów formularzy, czy wyświetlanie odnośnikow akcji. Możesz użyć klas pomocników w tym celu. Aby użyć pomocnika w swoim skrypcie widoku, wywołaj go za pomocą $this->nazwaPomocnika(). Obiekt Zend_View załaduje klasę Zend_View_Helper_NazwaPomocnika, utworzy obiekt tej klasy i wywoła metodę nazwaPomocnika(). Instancja obiektu istnieje teraz w instancji Zend_View i będzie ona ponownie używana przy następnych wywołaniach $this->nazwaPomocnika(). Wbudowane klasy pomocników Zend_View posiada wbudowany zbiór klas pomocników, z których wszystkie odnoszą się do generowania formularzy. Każda z nich autmatycznie filtruje dane wyjściowe. Są to: formButton($name, $value, $attribs): Tworzy element <input type="button" />. formCheckbox($name, $value, $attribs, $options): Tworzy element <input type="checkbox" />. Parametr $options jest tablicą w której pierwszy element jest wartością dla pola zaznaczonego ("checked"), a drugi wartością dla niezaznaczonego ("unchecked") (domyślnie są to wartości '1' i '0'). Jeśli wartość $value odpowiada wartości pola zaznaczonego ("checked"), to pole zostanie zaznaczone. formFile($name, $value, $attribs): Tworzy element <input type="file" />. formHidden($name, $value, $attribs): Tworzy element <input type="hidden" />. formPassword($name, $value, $attribs): Tworzy element <input type="password" />. formRadio($name, $value, $attribs, $options): Tworzy serię elementów <input type="radio" />, po jednym dla każdego elementu tablicy $options. W tablicy $options, klucz jest wartością przycisku radio, a wartość elementu tablicy jest etykietą przycisku radio. Zmienna $value określa wartość przycisku, który ma być początkowo zaznaczony. formReset($name, $value, $attribs): Tworzy element <input type="reset" />. formSelect($name, $value, $attribs, $options): Tworzy blok <select>...</select>, z elementami <option> po jednym dla każdego elementu tablicy $options. W tablicy $options klucz jest wartościa elementu, a wartość jest etykietą. Zmienna $value określa wartośc elementu (lub elementów), który ma być początkowo zaznaczony. formSubmit($name, $value, $attribs): Tworzy element <input type="submit" />. formText($name, $value, $attribs): Tworzy element <input type="text" />. formTextarea($name, $value, $attribs): Tworzy element <textarea>...</textarea>. Użycie tych metod w Twoim skrypcie jest bardzo łatwe, poniżej znajduje się przykład. Zauważ, że wszystko czego potrzebujesz to wywołanie tych metod; załadowanie ich i utworzenie instancji odbędzie się automatycznie. 'United States', 'il' => // 'Israel', 'de' => 'Germany'). ?>

]]>
Rezultat wyglądałby w ten sposób:

]]>
Ścieżki klas pomocników Tak jak ze skryptami widoków, kontroler może określić stos ścieżek, w których Zend_View ma szukać klas pomocników. Domyślnie Zend_View szuka klas pomocników w katalogu "Zend/View/Helper/*". Możesz wybrać inny katalog używając metod setHelperPath() oraz addHelperPath(). Dodatkowo możesz określić przedrostek klas pomocników znajdujących się w podanej ścieżce aby utworzyć przestrzenie nazw dla klas pomocników. Domyślnie, gdy żaden przedrostek nie zostanie określony, przyjęty zostanie przedrostek 'Zend_View_Helper_'. setHelperPath('/path/to/more/helpers', 'My_View_Helper'); ?>]]> Oczywiście możesz dodawać ścieżki na stos używająć metody addHelperPath(). Gdy dodajesz ścieżki na stos, Zend_View będzie szukać klasy pomocnika począwszy od ostatnio dodanej ścieżki. To pozwala na dodanie (lub nawet nadpisanie) podstawowego pakietu klas pomocników swoimi własnymi klasami. addHelperPath('/path/to/some/helpers'); // Add /other/path/to/helpers with class prefix 'Your_View_Helper' $view->addHelperPath('/other/path/to/helpers'); // teraz kiedy wywołasz $this->helperName(), Zend_View będzie wpierw szukał w // "/other/path/to/helpers/HelperName.php" używając nazwy klasy "My_View_Helper_HelperName", // następnie w "/path/to/some/helpers/HelperName" używając nazwy klasy "Your_View_Helper_HelperName", // i ostatecznie w "Zend/View/Helper/HelperName.php" używając nazwy klasy "Zend_View_Helper_HelperName". ?>]]> Pisanie własnych klas pomocników Pisanie własnych klas pomocników jest łatwe; po prostu pisz według poniższych zasad: Minimalna nazwa klasy musi kończyć się nazwą pomocnika przy użyciu CamelCaps. Przykładowo, jeśli piszesz klasę pomocnika zwaną "specialPurpose", minimalną nazwą klasy musi być "SpecialPurpose". Możesz, a nawet powinieneś nadać nazwie klasy przedrostek i jest zalecane, abyś użył 'View_Helper' jako części przedrostka: "My_View_Helper_SpecialPurpose". (Przedrostek będziesz musiał przekazać wraz z końcowym znakiem podkreślenia lub bez niego, do metod addHelperPath() oraz setHelperPath()). Klasa musi posiadać publiczną metodę która jest taka jak nazwa pomocnika; jest to metoda która zostanie wywołana gdy skrypt widoku wywoła "$this->twojPomocnik()". W przykładzie pomocnika "twojPomocnik", wymaganą deklaracją metody powinno być "public function twojPomocnik()". Klasa nie powinna wyświetlać ani w inny sposób generować danych wyjściowych. Zamiast tego powinna zwrócić dane do wyświetlenia. Zwracane wartości powinny być odpowiednio przefiltrowane. Klasa musi znajdować się w pliku odpowiednio do nazwy pomocnika. Przykladowo dla pomocnika o nazwie "twojPomocnik", plik powinien nazywać się "TwojPomocnik.php". Umieść plik klasy pomocnika w katalogu który był dodany do stosu ścieżek, a Zend_View automatycznie załaduje klasę, utworzy instancję, i uruchomi metodę. Poniżej przykład kodu naszego przykładowego pomocnika twojPomocnik: _count++; $output = "I have seen 'The Jerk' {$this->_count} time(s)."; return htmlspecialchars($output); } } ?>]]> Teraz w skrypcie widoku możesz wywołać pomocnika TwojPomocnik tyle razy ile zechcesz; instancja zostanie utworzona raz i będzie ona istniała przez cały okres istnienia instancji Zend_View. twojPomocnik(); echo $this->twojPomocnik(); echo $this->twojPomocnik(); ?>]]> Dane wyjściowe wyglądałyby w ten sposób: