Rozdział 34. Zend_View

Spis treści

34.1. Wprowadzenie
34.1.1. Skrypt kontrolera
34.1.2. Skrypt widoku
34.2. Skrypt kontrolera
34.2.1. Przekazywanie zmiennych
34.2.2. Wykonywanie skryptu widoku
34.2.3. Ścieżki skryptu widoku
34.3. Skrypty widoków
34.3.1. Filtrowanie danych wyjściowych
34.3.2. Użycie alternatywnych systemów szablonów
34.4. Klasy pomocników
34.4.1. Wbudowane klasy pomocników
34.4.2. Ścieżki klas pomocników
34.4.3. Pisanie własnych klas pomocników

34.1. Wprowadzenie

Zend_View jest klasą zapewniającą obsługę części widoku ("view") we wzorcu projektowym MVC (model-view-controller). Istnieje ona w celu oddzielenia wyglądu aplikacji od kontrolerów i danych. Zapewnia system skryptów pomocników i filtrów.

Zend_View jest bardzo prostym systemem; możesz użyć PHP jako jezyka szablonów lub utworzyć instancje innych systemów szablonów, a następnie manipulować nimi wewnątrz skryptu widoku.

Zasadniczo użycie Zend_View składa się z dwóch kroków: 1. Twój skrypt kontrolera tworzy instancję klasy Zend_View i przekazuje zmienne do tej instancji. 2. Kontroler mówi obiektowi Zend_View aby przetworzył określony skrypt widoku, skutkiem tego jest wygenerowanie wyjściowego widoku.

34.1.1. Skrypt kontrolera

Aby pokazać prosty przykład załóżmy, że kontroler ma dane w postaci listy książek i chcemy aby były one przetworzone jako widok. Skrypt kontrolera mógłby wyglądać tak:

<?php
// użyjmy modelu aby uzyskać dane o autorach książek i ich tytułach
$data = array(
    array(
        'author' => 'Hernando de Soto',
        'title' => 'The Mystery of Capitalism'
    ),
    array(
        'author' => 'Henry Hazlitt',
        'title' => 'Economics in One Lesson'
    ),
    array(
        'author' => 'Milton Friedman',
        'title' => 'Free to Choose'
    )
);

// przekażmy dane o książkach do instancji Zend_View
Zend_Loader::loadClass('Zend_View');
$view = new Zend_View();
$view->books = $data;

// wygenerujemy wyjściowy widok o nazwie "booklist.php"
echo $view->render('booklist.php');
?>
        

34.1.2. Skrypt widoku

Teraz potrzebujemy skryptu widoku "booklist.php". Jest to skrypt PHP jak każdy inny, z jednym wyjątkiem: jest on wykonywany w przestrzeni instancji Zend_View, co oznacza, że odnosi się on do właściwości i metod klasy Zend_View za pomocą $this. (Zmienne przekazane do tej instancji przez kontroler sa publicznymi właściwościami instancji Zend_View.) Więc bardzo prosty skrypt mógłby wyglądać tak:

<?php if ($this->books): ?>
    
    <!-- Tabela z książkami. -->
    <table>
        <tr>
            <th>Autor</th>
            <th>Tytuł</th>
        </tr>
        
        <?php foreach ($this->books as $key => $val): ?>
        <tr>
            <td><?php echo $this->escape($val['author']) ?></td>
            <td><?php echo $this->escape($val['title']) ?></td>
        </tr>
        <?php endforeach; ?>
        
    </table>
    
<?php else: ?>
    
    <p>Nie ma żadnych książek do wyświetlenia.</p>
    
<?php endif; ?>
        

Zauważ, że używamy metody "escape()" aby przefiltrować zmienne wyjściowe.