Zend Framework Tutorial
Zend_View
Zend_View jest klasą która pomaga zorganizować warstwę widoku w modelu MVC. Jest to bardzo prosty system szablonów. Nie używam w tym tutorialu innych systemów szablonów. Jednak w tej kwesti masz wolną rękę i jeśli chcesz możesz użyć innego systemu szablonów.
Miej na uwadze to, że wszystkie przychodzące żądania są obsługiwane przez kontroler frontowy. Struktura aplikacji już istnieje i przyszłe aktualizacje muszą jej odpowiadać. Aby w bardzo prosty sposób użyć klasy Zend_View, zmień kod klasy IndexController.php w taki sposób:
-
<?php
-
-
Zend::loadClass('Zend_Controller_Action');
-
Zend::loadClass('Zend_View');
-
-
class IndexController extends Zend_Controller_Action
-
{
-
public function indexAction()
-
{
-
$view = new Zend_View();
-
$view->setScriptPath('/path/to/views');
-
}
-
-
public function noRouteAction()
-
{
-
$this->_redirect('/');
-
}
-
}
-
-
?>
Utwórz plik example.php w katalogu widoków:
-
<html>
-
<head>
-
<title>This Is an Example</title>
-
</head>
-
<body>
-
<p>This is an example.</p>
-
</body>
-
</html>
Teraz gdy wywołasz główną stronę witryny powinieneś zobaczyć zawartość pliku example.php. Nie jest jeszcze zbyt użyteczne, ale pamiętaj że tworzysz aplikację o bardzo zorganizowanej strukturze.
W celu uzyskania jaśniejszego przykładu użycia Zend_View, zmodyfikuj szablon (example.php) aby wyświetał dane:
Zostały dodane dwie fukncjonalności. Metoda $this->escape() powinna być używana na każdych danych wychodzących. Nawet jeśli te dane tworzysz Ty (jak jest w powyższym przykładzie) powinieneś je filtrować pod kątem bezpieczeństwa. Jest to dobry nawyk, który pomaga zapobiegać atakom XSS.
Zmienne $this->title oraz $this->body istnieją w celu zademonstrowania dynamicznych danych. Powinny one być zdefiniowane w kontrolerze, więc zmodyfikuj IndexController.php aby przypisać im wartości:
-
<?php
-
-
Zend::loadClass('Zend_Controller_Action');
-
Zend::loadClass('Zend_View');
-
-
class IndexController extends Zend_Controller_Action
-
{
-
public function indexAction()
-
{
-
$view = new Zend_View();
-
$view->setScriptPath('/path/to/views');
-
$view->title = 'Dynamic Title';
-
$view->body = 'This is a dynamic body.';
-
}
-
-
public function noRouteAction()
-
{
-
$this->_redirect('/');
-
}
-
}
-
-
?>
Teraz jeśli otworzysz stronę główną witryny powinieneś zobaczyć efekt użycia tych zmiennych w szablonie. Powodem użycia $this w szablonie jest to, że jest on wykonywany w przestrzeni instancji klasy Zend_View.
Pamiętaj, że plik example.php jest zwykłym skryptem PHP, więc możesz w nim zrobić co zechcesz. Jednak próbuj ograniczać użycie pliku szablonu jedynie do wyświetlania danych. Twój kontroler (lub moduł który kontroler uruchamia) powinien przekazywać dane z warstwy modelu do warstwy widoku.
Zanim kontynuujemy powinniśmy zrobić jeszcze jedną rzecz związaną z klasą Zend_View. Tworzenie instancji obiektu $view w każdej metodzie kontrolera wymaga napisania sporej ilości nadmiarowego kodu, a naszym założeniem jest napisanie aplikacji w sposób łatwy i szybki. Problemem jest także konieczność wywoływania metody setScriptPath() w każdej z akcji.
Na szczęście klasa Zend zapewnia obsługę rejestru który pomaga wyeliminować tę niedogodność. Możesz przechować obiekt $view w rejestrze używając metody register():
-
<?php
-
-
Zend::register('view', $view);
-
-
?>
Aby ją odebrać, użyj metody registry():
-
<?php
-
-
$view = Zend::registry('view');
-
-
?>
Od tej pory będziemy w tutorialu używać rejestru.



To miłe, że pofatygowałeś się z przetłumaczeniem tutoriala do Zend Framework. Czytanie tego rodzaju opracaowań jest bardziej przyjazne niż sucha lektura dokumentacji, a czytanie w rodzimym języku to wręcz luksus. Robisz fajną robotę ulatwiajac pierwszy kontakt z tym frameworkiem - mowie tu zarówno o powyższym tekscie, jak i o strone http://zf.naruniec.info/. Tak przy okazji czy to (http://framework.zend.com/developer/changeset/589) tlumaczenie tez jest Twojego autorstwa?