Rozdział 17. Zend_View
Poprzedni |  | Następny

## Rozdział 17. Zend_View

## 17.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.

### 17.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::loadClass('Zend_View');
    $view = new Zend_View();
    $view->books = $data;

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

### 17.1.2. Skrypt widoku

Teraz potrzebujemy skryptu widoku "booklist.php". Jest to skrypt PHP jak każy 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.

Poprzedni |  | Następny
16.5. Zend_Service_Yahoo | Spis treści | 17.2. Skrypt kontrolera