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: