במסגרת גוף Zend תג צפה Helper
תקציר
הנה אני לדון בהקמת עוזר להציג עבור שינוי תגי HTML, או ליתר דיוק תגיות הגוף. עוזר להציג שנוצר מאפשר פונקציונליות דומה ל * הראש / inlineScript העוזרים להציג כבר רגיל Zend Framework העוזרים להציג, אך מאפשרת שינוי תוכניתית של תכונות התג. בהחלט לבדוק את דף הדגמה הקוד GitHub.
מוטיבציה
תקן Zend Framework להציג העוזרים הם קבוצה גדולה של כלים עבור התייעלות משימות צפה הארצי המאפשר שינוי / תוספת של תסריטים בלוקים כותרת (שנערך בדרך כלל בפריסה) מתוך תצוגת ללא החלת פריצות מכוערים (קרי * ראשו / inlineScript העוזרים להציג).
על האירוע מצאתי צורך לבצע שינויים <body> תג, למשל הוספת onload , בכיתה, או וכו תכונת סגנון אני נדרש גם כדי להיות מסוגל לבצע את זה מתוך העוזרים תצוגה אחרים. קח לדוגמה את זה מאולץ הבאות ...
באתר X, בדפים מסוימים כוללים תקן בדוג טפסים. צורות אלה דוג 'ו מוחזקים בתוך העוזרים צפה לנוחות. בדרך כלל, הוחלט שלא לכלול את הדוג 'ו CSS כיתות ב גוף התג ורק להוסיף אותם בעת הצורך. יש עוזרים להציג כמה אולי בדף זה צריך להוסיף תכונות משלהם לגוף התג. (אמרתי שזה היה מאולץ)
הקוד זמין ב git שלי מאגר @ GitHub את דף ההדגמה .
איך זה עובד
בעת יצירת תג הגוף צפה עוזר מהר מאוד הבנתי שרוב הקוד לא היה ספציפי מה אני מפתחת אז שלפתי את הפונקציונליות משותף לכיתה מופשט. לפי concreting המעמד המופשט ניתן לשנות כל תג באותה דרך כמו את תג הגוף דנו כאן עושה את הקוד הרבה versitile יותר.
מתחת למכסה המנוע (כביכול) את הקוד מבוסס על זה של * את הראש ואת העוזרים צפה inlineScript. זה מנצל Zend_View_Helper_Placeholder_Container_Standalone לאחסן את התכונות והערכים שלהם עד שהם נדרשים. את המיכל עצמו משתמש Zend_Registry כדי לאחסן ערכים תחת מפתח שהוגדרו בכיתה (אם אתה מסתכל על יחידת בדיקות אני לנקות את הרישום למטה אחרי כל בדיקה).
הקוד לא השתלב היטב עם " Zend_Layout עירום Zend_View "קוד כתבתי על כמה שבועות לפני או כחלק סטנדרטי Zend Framework MVC להתקין.
הקישורים
הכיתה צריכה להיות פשוטה מאוד לשימוש. ראשית שני הערכים הנדרשים בתוך סקריפט הפריסה שלך כדלקמן:
<? Php echo $ הזה-> bodyTag ()?> <? Php echo $ הזה-> bodyTag () -> toString (Pro_View_Helper_AbstractTag:: סגור)?>
הערה: עליך לשנות את שם הכיתה אתה צריך להעביר את עוזר להציג את הספריה שלך. ברור מתמיד זמין באמצעות יישום (bodyTag) וכן באמצעות המעמד המופשט.
דוגמה של ביצוע שינויים תג הגוף שלך באמצעות עוזר להציג את הד myclass" class="nihilo <body style="text-align-left; width: 80em"> היא:
<? PHP זה $-> bodyTag ("הכיתה", "nihilo ') - BodyTag> ('סגנון', 'טקסט ליישר: שמאל') - BodyTag> ('סגנון' רוחב: 80em ', שקר, ";") - BodyTag> ("הכיתה", "myclass ') ?>
ניתן לעשות זאת לאורך כל הקובץ תצוגה, העוזרים להציג אחדות, בקובץ הפריסה (בתנאי שלה לפני תג הגוף הוא נכתב מתוך). תכונות ניתן להסיר / ערכים תוך מוחלפים ניתן להוסיף המצורף (מפריד יכולה להיות מועברת). אם ערך התכונה אותה הוא עבר כמה פעמים רק עותק אחד כתוב עם התכונה.
לקבלת מלא הדגמה או מזלג GitHub מאגר ולהפעיל את הקובץ demo.php בדפדפן שלכם, או לחילופין לבקר בדף זה כדי לראות אותו בפעולה. הקישורים של demo.php סקריפט מניח שיש לך את Autoloader Zend (או דומה) כבר ההתקנה.
יצירת עוזר משלך תגית
כדי ליישם עוזר להציג משלך פשוט להאריך את המעמד תג מופשט להחליף את מאפייני הכיתה הבאים:
- $ _regKey: מפתח ייחודי עבור התג (המשמש Zend_Registry)
- $ _validAttributes: מערך של שמות התכונות חוקי, צריך להיות באותיות קטנות לעמוד W3C
- $ _selfClosing: ערך בוליאני כדי לציין אם תג סגירה עצמית או לא, למשל <br/>
- $ _tagName: שם התגית (הגוף כלומר בדוגמה זו)
אז, סוף סוף את הקוד העוזר צפה bodyTag עצמו, קומפקטית מאוד שלה:
/ ** * צפה עוזר תג הגוף * @ המחבר לויד ווטקין * @ מאז 21/08/2010 * @ * חבילת Pro @ * ViewHelper subpackage Pro_View_Helper_BodyTag / מחלקה מרחיבה Pro_View_Helper_AbstractTag {/ ** * מפתח הרישום עבור מציין המיקום * @ * string var / מוגן $ _regKey = 'Pro_View_Helper_BodyTag'; / ** * אילו תכונות הן * תקף כרגע רק STF התכונות הנתמכות * (S = קפידה, T = המעבר, F = FRAMESET) * @ לראות http://www * .w3schools.com/tags/tag_body.asp @ * מערך var / מוגן $ _validAttributes = (מערך / * תקן תכונות 'דיר' 'מעמד' /,, "ID", "לאנג ',' סגנון ',' כותרת "," xml : lang ", / * תכונות * אירוע / 'ondblclick onclick", "", "onload', 'onmousedown', 'onmousemove", "onmouseout', 'onmouseover', 'onmouseup', 'onkeydown', "onkeypress ',' onkeyup ',' onunload ',); / ** עצמי * תג סוגר? * @ * * בוליאני var / _selfClosing $ מוגן = false; / ** * תג * @ * מחרוזת var / מוגן $ _tagName 'גוף' =;}
אם תסתכל במאגר יש גם קבוצה של בדיקות יחידה מלא לכסות את הפונקציונליות. יחידת בדיקות כתובים PHPUnit ו נמצאים BodyTagTest.php הקובץ.
לבסוף ...
הנה הראיתי לך ביצוע שלי של עוזר להציג מופשט מופשט תג (EEK) ו תג הגוף שלה ליישום. בעוד פונקציונליות JavaScript ניתן ליישם בדרכים אחרות (מלבד קשה קידוד בזמן פלט) דברים אחרים לא יכול (בלי JavaScript זה) מבלי לשנות חלקים אחרים של היישום. אני מקווה שתמצא את השיעורים מועיל הבקשה שלך ...



















































והמקשר automagic שלי גרמה בנושא בקוד עבור XML אז בבקשה להתעלם כי הבעיה:)
[...] המקורי כאן: Evilprofessor.co.uk »Zend Framework גוף תג צפה Helper לא [...]
[...] יותר מן המקור מקורי: Evilprofessor.co.uk »Zend Framework גוף תג צפה Helper שתף [...]