Skrypt kontrolera
Kontroler jest miejscem, w którym tworzysz i konfigurujesz instancję
Zend_View. Potem przypisujesz do tej instancji zmienne zawierające dane,
a następnie wybierasz skrypt widoku, który ma być zrenderowany.
Przekazywanie zmiennych
Twój skrypt kontrolera powinien przypisać potrzebne zmienne do
instancji widoku, zanim przekaże kontrolę do skryptu widoku. Możesz
to zrobić przypisując zmienne do zmiennych instancji widoku:
a = "Hay";
$view->b = "Bee";
$view->c = "Sea";
]]>
Jednak mogłoby być niewygodnie gdy zmienne, które masz przekazać
są zebrane w tablicy lub obiekce.
Metoda assign() pozwala na automatyczne przypisanie wszystkich
zmiennych z tablicy lub obiektu. Poniższe przykłady dają taki sam
efekt jak poprzedni przykład, w którym zmienne były przypisywane
pojedynczo:
"Hay",
'b' => "Bee",
'c' => "Sea",
);
$view->assign($array);
// robi to samo z publicznymi właściwościami
// obiektu. zauważ jak rzutujemy obiekt na
// tablicę podczas przypisywania
$obj = new StdClass;
$obj->a = "Hay";
$obj->b = "Bee";
$obj->c = "Sea";
$view->assign((array) $obj);
]]>
Oczywiście możesz także przypisywać zmienne jedna po drugiej,
przekazując nazwę zmiennej jako łańcuch znaków, a potem wartość
zmiennej:
assign('a', "Hay");
$view->assign('b', "Bee");
$view->assign('c', "Sea");
]]>
Wykonywanie skryptu widoku
Kiedy już przypisałeś wszystkie zmienne, kontroler powinien przekazać
obiektowi Zend_View informację o wykonaniu konkretnego skryptu widoku.
Zrób to wywołując metodę render(). Zauważ, że ta metoda zwróci
wygenerowany widok zamiast wyświetlając go, więc musisz sam go wyświetlić
za pomocą funkcji echo() lub print().
a = "Hay";
$view->b = "Bee";
$view->c = "Sea";
echo $view->render('someView.php');
]]>
Ścieżki skryptu widoku
Domyślnie, Zend_View oczekuje, że skrypty widoku są umieszczone
względnie do skryptu wywołującego. Na przykład jeśli
Twój skrypt kontrolera jest w katalogu "/path/to/app/controllers"
i wywołuje on $view->render('someView.php'), to Zend_View będzie
szukać pliku "/path/to/app/controllers/someView.php".
Oczywiście, Twoje skrypty są pewnie umieszczone gdzieś indziej.
Aby poinformować Zend_View o tym, gdzie ma szukać skryptów, użyj
metody setScriptPath().
setScriptPath('/path/to/app/views');
]]>
Teraz kiedy wywołasz metodę $view->render('someView.php'), będzie ona
szukać pliku "/path/to/app/views/someView.php".
Oczywiście możesz dodawać ścieżki na stos używająć metody addScriptPath().
Gdy dodajesz ścieżki na stos, Zend_View będzie szukać skryptu widoku
począwszy od ostatnio dodanej ścieżki. To pozwala na nadpisanie domyślnych
widoków za pomocą innych widoków, dzięki czemu możesz tworzyć różne
"motywy" czy "skórki" dla niektórych widoków, zostawiając inne bez zmian.
addScriptPath('/path/to/app/views');
$view->addScriptPath('/path/to/custom/');
// teraz gdy wywołasz $view->render('booklist.php'), Zend_View będzie
// wpierw szukać pliku "/path/to/custom/booklist.php", potem
// "/path/to/app/views/booklist.php", a ostatecznie pliku "booklist.php"
// w bieżącym katalogu
]]>