תצוגה
====

קובץ תצוגה הוא קובץ PHP המכיל בעיקר אלמנטים הקשורים לממשק המשתמש. קובץ זה יכול להכיל פקודות PHP, אבל רצוי שפקודות אלו לא ישנו מידע לגבי המודלים וישארו פשוטות יחסית. למען הלוגיקה של הפרדת הקוד מהעיצוב, חלקים גדולים של פקודות PHP צריכות להיות ממוקמות בקבצי הקונטרולר והמודלים ולא בקבצי התצוגה.

לקובץ תצוגה יש שם אשר נועד למטרת זיהוי בעת הקריאה לאותו הקובץ. שמו של קובץ התצוגה זהה לשם הקובץ הפיזי בו הוא נשמר. לדוגמא, קובץ תצוגה בשם `edit` מתייחס לקובץ סקריפט PHP בשם `edit.php`. כדי לטעון קובץ תצוגה יש לקרוא לפונקציה [CController::render] כשהפרמטר הראשון בפונקציה הוא שמו של קובץ התצוגה אותו רוצים להציג. הפונקציה תחפש אחר קובץ התצוגה המתאים תחת הנתיב `protected/views/ControllerID`.

בתוך קובץ התצוגה, ניתן לגשת לאובייקט הקונטרולר בעזרת האובייקט `this$`. לכן ניתן לגשת לכל מאפיין/משתנה של המחלקה בעזרת קריאה ל `this-»propertyName$` בתוך קובץ התצוגה.

כמו כן ניתן להשתמש בשיטה הבאה כדי `לדחוף` נתונים אל קובץ התצוגה:

~~~
[php]
$this-»render('edit', array(
    'varone'=»$value1,
    'vartwo'=»$value2,
));
~~~


בקוד המוצג למעלה, הפונקציה [render|CController::render] תחלץ את המערך המוגדר בפרמטר השני כערכים. כתוצאה, בתוך קובץ התצוגה ניתן יהיה לגשת למשתנים `varone$` ו `vartwo$`.



תבנית
------

תבנית מהווה כקובץ תצוגה מיוחד הנועד לעטר את קבצי התצוגה הרגילים (המוצגים למעלה). בדרך כלל הוא מכיל חלקים של ממשקי משתמש אשר מוצגים בכל מקום. לדוגמא, קובץ תבנית יכול להכיל את ראש הדף ואת תחתית הדף ולהציג את התוכן באמצע.

~~~
[php]
......header here......
«?php echo $content; ?»
......footer here......
~~~

כשהערך `content$` מכיל את התוצאה של אותם קבצי תצוגה שקראנו להם קודם לכן בעזרת [render|CController::render].

תבנית מיושמת ברגע שיש קריאה ל [render|CController::render]. כברירת מחדל, קובץ התצוגה `protected/views/layouts/main.php` מוגדר כקובץ התבנית. ניתן לשנות זאת על ידי שינוי הערך של [CWebApplication::layout] או [CController::layout]. כדי לקרוא לקובץ תצוגה ולהציג אותו ללא קובץ תבנית, יש לקרוא לפונקציה [renderPartial|CController::renderPartial] במקום [render|CController::render].

וידג'ט
------

וידג'ט הוא אובייקט של [CWidget] או במחלקות הנמצאות תחתיו. זהו רכיב המיועד בעיקר למטרות תצוגה. וידג'טים בדרך כלל מוטמעים בקבצי תצוגה כדי ליצור ממשקים מורכבים אך כלליים. לדוגמא, וידג'ט לוח-שנה יכול לשמש כדי להציג לוח-שנה מורכב בממשק המשתמש. וידג'טים מאפשרים שימוש חוזר טוב יותר לצרכי תצוגה.

כדי להשתמש ב וידג'ט השתמש בצורה הבאה בקובץ תצוגה:

~~~
[php]
«?php $this-»beginWidget('path.to.WidgetClass'); ?»
...תוכן כלשהו שניתן לתפוס בעזרת ה וידג'ט...
«?php $this-»endWidget(); ?»
~~~

או

~~~
[php]
«?php $this-»widget('path.to.WidgetClass'); ?»
~~~

הדוגמא השנייה משמשת כשהוידג'ט לא צריך לתפוס שום תוכן.

ניתן לשנות את אופן ההתנהלות של הוידג'טים בעת קריאתם. בכדי לעשות זאת יש להגדיר את הערכים הראשוניים של הוידג'ט בזמן הקריאה הראשונה שלהם על ידי [CBaseController::beginWidget] או [CBaseController::widget]. לדוגמא, כשמשתמשים בוידג'ט [CMaskedTextField], אנחנו נרצה להגדיר את המסכה לשימוש. אנחנו מבצעים זאת על ידי העברת מערך כמפרמטר שני להגדרת הערכים הראשוניים כדלקמן, כשמפתחות המערך הם שמות המאפיינים של הוידג'ט והערכים של המערך הם הערכים הראשוניים של הוידג'ט:

~~~
[php]
«?php
$this-»widget('CMaskedTextField',array(
    'mask'=»'99/99/9999'
));
?»
~~~

כדי להגדיר וידג'ט חדש, יש ליצור מחלקה אשר יורשת מ [CWidget], וליישם את המתודות [init|CWidget::init] ו [run|CWidget::run] במחלקה:

~~~
[php]
class MyWidget extends CWidget
{
    public function init()
    {
        // this method is called by CController::beginWidget()
    }

    public function run()
    {
        // this method is called by CController::endWidget()
    }
}
~~~

כמו בקונטרולר, וידג'ט יכול להכיל קובץ תצוגה משלו. כברירת מחדל, קבצי התצוגה של הוידג'ט נמצאים תחת התיקיה `views` בתיקיה הראשית בה המחלקה של הוידג'ט נמצא. ניתן להציג את קבצי התצוגה הללו בעזרת [CWidget::render], בדומה לפעולה הנעשית בקונטרולר. ההבדל היחיד הוא שלא ניתן להגדיר תבנית לתצוגה של הוידג'ט. בנוסף, `this$` בתוך קובץ תצוגה של וידג'ט מכוון אל האובייקט של הוידג'ט במקום האובייקט של הקונטרולר.

תצוגת מערכת
-----------

תצוגת מערכת הם קבצי תצוגה אשר Yii משתמשת בהם לצרכי תצוגה של מידע אודות שגיאות ולוגים. לדוגמא, כשמשתמש מבקש קונטרולר לא קיים או פעולה שלא קיימת, Yii יזרוק שגיאה שמסבירה אודות השגיאה שהתרחשה. Yii מציג את השגיאה בתוך קובץ תצוגה מערכתי ספציפי.

שמות התצוגה של קבצי תצוגת המערכת עוקבים אחר אותם חוקים. שמות כמו `errorXXX` משמשים לתצוגה של שגיאות אשר נזרקות על ידי [CHttpException] כשקוד השגיאה הוא `XXX`. לדוגמא, אם התרחשה שגיאה של [CHttpException] עם קוד שגיאה 404, קובץ התצוגה המערכתי שיוצג יהיה `error404`.

Yii מספקת קבצי תצוגה מערכתיים כברירת מחדל אשר נמצאים תחת `framework/views`. ניתן להגדיר את קבצי התצוגה באופן עצמאי על ידי יצירת אותם קבצי תצוגה עם אותם השמות תחת התיקיה `protected/views/system`.


«div class="revision"»$Id: basics.view.txt 1809 2010-02-17 22:08:34Z qiang.xue $«/div»