קובץ תצוגה הוא קובץ PHP המכיל בעיקר אלמנטים הקשורים לממשק המשתמש. קובץ זה יכול להכיל פקודות PHP, אבל רצוי שפקודות אלו לא ישנו מידע לגבי המודלים וישארו פשוטות יחסית. למען הלוגיקה של הפרדת הקוד מהעיצוב, חלקים גדולים של פקודות PHP צריכות להיות ממוקמות בקבצי הקונטרולר והמודלים ולא בקבצי התצוגה.
לקובץ תצוגה יש שם אשר נועד למטרת זיהוי בעת הקריאה לאותו הקובץ. שמו של קובץ התצוגה זהה לשם הקובץ הפיזי בו הוא נשמר. לדוגמא, קובץ תצוגה בשם edit
מתייחס לקובץ סקריפט PHP בשם edit.php
. כדי לטעון קובץ תצוגה יש לקרוא לפונקציה CController::render כשהפרמטר הראשון בפונקציה הוא שמו של קובץ התצוגה אותו רוצים להציג. הפונקציה תחפש אחר קובץ התצוגה המתאים תחת הנתיב protected/views/ControllerID
.
בתוך קובץ התצוגה, ניתן לגשת לאובייקט הקונטרולר בעזרת האובייקט this$
. לכן ניתן לגשת לכל מאפיין/משתנה של המחלקה בעזרת קריאה ל this-»propertyName$
בתוך קובץ התצוגה.
כמו כן ניתן להשתמש בשיטה הבאה כדי לדחוף
נתונים אל קובץ התצוגה:
$this-»render('edit', array(
'varone'=»$value1,
'vartwo'=»$value2,
));
בקוד המוצג למעלה, הפונקציה render תחלץ את המערך המוגדר בפרמטר השני כערכים. כתוצאה, בתוך קובץ התצוגה ניתן יהיה לגשת למשתנים varone$
ו vartwo$
.
תבנית מהווה כקובץ תצוגה מיוחד הנועד לעטר את קבצי התצוגה הרגילים (המוצגים למעלה). בדרך כלל הוא מכיל חלקים של ממשקי משתמש אשר מוצגים בכל מקום. לדוגמא, קובץ תבנית יכול להכיל את ראש הדף ואת תחתית הדף ולהציג את התוכן באמצע.
......header here......
«?php echo $content; ?»
......footer here......
כשהערך content$
מכיל את התוצאה של אותם קבצי תצוגה שקראנו להם קודם לכן בעזרת render.
תבנית מיושמת ברגע שיש קריאה ל render. כברירת מחדל, קובץ התצוגה protected/views/layouts/main.php
מוגדר כקובץ התבנית. ניתן לשנות זאת על ידי שינוי הערך של CWebApplication::layout או CController::layout. כדי לקרוא לקובץ תצוגה ולהציג אותו ללא קובץ תבנית, יש לקרוא לפונקציה renderPartial במקום render.
וידג'ט הוא אובייקט של CWidget או במחלקות הנמצאות תחתיו. זהו רכיב המיועד בעיקר למטרות תצוגה. וידג'טים בדרך כלל מוטמעים בקבצי תצוגה כדי ליצור ממשקים מורכבים אך כלליים. לדוגמא, וידג'ט לוח-שנה יכול לשמש כדי להציג לוח-שנה מורכב בממשק המשתמש. וידג'טים מאפשרים שימוש חוזר טוב יותר לצרכי תצוגה.
כדי להשתמש ב וידג'ט השתמש בצורה הבאה בקובץ תצוגה:
«?php $this-»beginWidget('path.to.WidgetClass'); ?»
...תוכן כלשהו שניתן לתפוס בעזרת ה וידג'ט...
«?php $this-»endWidget(); ?»
או
«?php $this-»widget('path.to.WidgetClass'); ?»
הדוגמא השנייה משמשת כשהוידג'ט לא צריך לתפוס שום תוכן.
ניתן לשנות את אופן ההתנהלות של הוידג'טים בעת קריאתם. בכדי לעשות זאת יש להגדיר את הערכים הראשוניים של הוידג'ט בזמן הקריאה הראשונה שלהם על ידי CBaseController::beginWidget או CBaseController::widget. לדוגמא, כשמשתמשים בוידג'ט CMaskedTextField, אנחנו נרצה להגדיר את המסכה לשימוש. אנחנו מבצעים זאת על ידי העברת מערך כמפרמטר שני להגדרת הערכים הראשוניים כדלקמן, כשמפתחות המערך הם שמות המאפיינים של הוידג'ט והערכים של המערך הם הערכים הראשוניים של הוידג'ט:
«?php
$this-»widget('CMaskedTextField',array(
'mask'=»'99/99/9999'
));
?»
כדי להגדיר וידג'ט חדש, יש ליצור מחלקה אשר יורשת מ CWidget, וליישם את המתודות init ו run במחלקה:
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
.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.