فصل 28. Zend_View
السابق |  | التالي

## فصل 28. Zend_View

## 28.1. مقدمة

Zend_View عبارة عن class للعمل مع جزء الـ "view" الخاص بالنمط model-view-controller , أى أنه يتواجد ليفصل عملية العرض "view" عن كل من جزء الـ model و جزء الـ controller , حيث يوفر نظام من المساعدات "helpers" و فلاتر للخرج "output filters" و وسائل لتجاهل قيم المتغيرات.

Zend_View عبارة عن نظام قوالب (مجهول) ; يمكنك أن تستخدم لغة PHP نفسها كنظام قوالب, أو يمكنك إنشاء نسخة "instance" من أى نظام قوالب و دمجه مع أكواد جزء الـ view خاصتك.

فى الأساس, إستخدام Zend_View يحدث فى خطوتان هامتان : 1. الـ controller خاصتك يقوم بإنشاء نسخة من Zend_View و يقوم بتمرير متغيرات إلى هذه النسخة . 2. الـ controller يأمر Zend_View بأن يقوم بمعالجة view محدد, بذلك يتم نقل التحكم إلى أكواد الـ view التى تقوم بإنتاج خرج الـ view.

### 28.1.1. كود الـ Controller

كمثال بسيط, دعونا نفترض أن الـ controller خاصتك لديه قائمة ببيانات كتب و التى نريد أن يتم عرضها (عمل render "تصيير" لها) من خلال view , جزء الـ controller من الممكن أن يكون بهذا الشكل :

    <?php
    // use a model to get the data for book authors and titles.
    $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'
        )
    );

    // now assign the book data to a Zend_View instance
    Zend::loadClass('Zend_View');
    $view = new Zend_View();
    $view->books = $data;

    // and render a view script called "booklist.php"
    echo $view->render('booklist.php');
    ?>

### 28.1.2. كود الـ View

الأن نحن نحتاج كود الـ view المرافق لـ "booklist.php", و هو عبارة عن كود PHP عادى مع وجود إختلاف واحد: أنه يتم تنفيذه داخل مدى "scope" نسخة الـ Zend_View , و الذى يعنى أن المتغير this$ فى هذا الكود سيشير إلى الـ properties و الـ methods الخاصة بهذه النسخة من Zend_View . (المتغيرات التى سيتم تمريرها إلى هذه النسخة من خلال الـ controller ستكون عبارة عن public properties تابعة لنسخة الـ Zend_View ) , إذاً كود view بسيط من الممكن أن يكون مثل هذا :

    <?php if ($this->books): ?>

        <!-- A table of some books. -->
        <table>
            <tr>
                <th>Author</th>
                <th>Title</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>There are no books to display.</p>

    <?php endif; ?>

لاحظ كيف نستخدم الـ method المسمى "()escape" لنقوم بعمل تجاهل لقيم المتغيرات.

السابق |  | التالي
27.5. Validating Hostnames | البداية | 28.2. جزء الـ Controller