Tag Zend Framework ร่างกายผู้ช่วยดู

โดย Watkin Steven Lloyd , วันเสาร์ 21 สิงหาคม 2010 23:13
Photo from  http://www.flickr.com/photos/daniello/

ภาพจาก http://www.flickr.com/photos/daniello/

สรุป

นี่ฉันจะหารือเกี่ยวกับการสร้างมุมมองของผู้ช่วยเหลือสำหรับการแก้ไขแท็ก HTML, และอื่น ๆ โดยเฉพาะแท็กร่างกาย ดูตัวช่วยสร้างจะช่วยให้การทำงานที่คล้ายกับ * หัว / ผู้ช่วยดู inlineScript อยู่ในมาตรฐาน Zend Framework ผู้ช่วยดู แต่ช่วยให้การปรับเปลี่ยนแอตทริบิวต์ของแท็กการเขียนโปรแกรม แน่นอนตรวจสอบหน้าการสาธิตและรหัสบน GitHub

แรงจูงใจ

มาตรฐาน Zend Framework ผู้ช่วยดูเป็นชุดที่ยอดเยี่ยมของเครื่องมือสำหรับการสตรีมมิ่งดูงานทางโลกและเพื่อให้สามารถปรับเปลี่ยน / เพิ่มสคริปและบล็อกส่วนหัว (ถือหุ้นโดยทั่วไปในรูปแบบ) จากภายในดูน่าเกลียดโดยไม่ใช้การแฮ็ก (คือ * หัว / inlineScript ผู้ช่วยเหลือในมุมมอง)

เมื่อมีโอกาสฉันได้พบจำเป็นต้องปรับเปลี่ยนแท็ก <body> ตัวอย่างเช่นการเพิ่ม onload , ชั้น, หรือ ฯลฯ คุณลักษณะสไตล์ฉันยังต้องเพื่อให้สามารถดำเนินการนี้จากในมุมมองผู้ช่วยเหลืออื่น Take นี้ contrived ตัวอย่างต่อไปนี้ ...

บนเว็บไซต์ X, หน้าเว็บบางหน้ารวมถึงมาตรฐาน Dojo รูปแบบ เหล่านี้รูปแบบโดโจจะมีขึ้นภายในผู้ช่วยดูเพื่อความสะดวก โดยทั่วไปจะได้รับการตัดสินใจที่จะไม่รวมถึงโดโจ CSS ชั้นเรียนในแท็กร่างกายและพวกเขาเท่านั้นเพิ่มเมื่อจำเป็น อาจจะมีหลายมุมมองผู้ช่วยเหลือในแท็กหน้าเว็บที่จำเป็นต้องเพิ่มแอตทริบิวต์ของตัวเองที่ร่างกายต้องการ. (ผมพูดว่ามัน contrived)

รหัสมีอยู่ในพื้นที่เก็บข้อมูลของฉัน git @ GitHub และ หน้าการสาธิต .

วิธีการทำงาน

เมื่อสร้างตัวแท็กผู้ช่วยดูผมรู้ทันทีว่าส่วนใหญ่ของรหัสที่ไม่เจาะจงกับสิ่งที่ฉันได้พัฒนาดังนั้นผมจึงดึงออกฟังก์ชันการทำงานร่วมกันในระดับนามธรรม โดย concreting คลาสนามธรรมก็เป็นไปได้ในการปรับเปลี่ยนแท็กใด ๆ ในลักษณะเดียวกับแท็กร่างกายที่กล่าวถึงข้างทำโค้ดอื่น ๆ อีกมากมาย versitile

ภายใต้เครื่องดูดควัน (เพื่อที่จะพูด) รหัสจะขึ้นอยู่กับที่ของ * หัวและผู้ช่วยดู inlineScript มันใช้ Zend_View_Helper_Placeholder_Container_Standalone เพื่อจัดเก็บคุณลักษณะและค่านิยมของพวกเขาจนกว่าพวกเขาจะต้อง ภาชนะที่ใช้ตัวเอง Zend_Registry เก็บค่าต่ำกว่าระดับสำคัญที่กำหนดไว้ใน (ถ้าคุณมองไปที่ หน่วยการทดสอบ ผมล้างรีจิสทรีลงหลังการทดสอบในแต่ละ)

รหัสจะพอดีกับได้ดีกับ" Zend_Layout เปล่าและ Zend_View "รหัสที่ผมเขียนเกี่ยวกับคู่ของสัปดาห์ที่ผ่านมาหรือเป็นส่วนหนึ่งของมาตรฐาน Zend Framework MVC ติดตั้ง

การใช้

ชั้นควรจะใช้ง่ายมาก สองรายการแรกจะถูกบังคับใช้ภายในสคริปเลย์เอาต์ของคุณดังต่อไปนี้

  <PHP? echo $ this -> bodyTag ()?>
 <? PHP echo $ this -> bodyTag () --> toString (Pro_View_Helper_AbstractTag : : Close)?> 

หมายเหตุ : คุณจะต้องเปลี่ยนชื่อชั้นเรียนคุณควรย้ายผู้ช่วยดูในห้องสมุดของคุณเอง แน่นอนคงที่สามารถใช้ได้ผ่านการทำงาน (bodyTag) รวมทั้งจากกลุ่มนักเรียนนามธรรม

ตัวอย่างของการเปลี่ยนแปลงการติดแท็กให้ร่างกายของคุณโดยใช้ตัวช่วยดูเพื่อสะท้อน myclass" class="nihilo <body style="text-align-left; width: 80em"> คือ :

  <? PHP
 $ this -> bodyTag ('ชั้น','nihilo')
     -- bodyTag> ('สไตล์','ข้อความชิด : ซ้าย')
     -- bodyTag> ('สไตล์''ความกว้าง : 80em',, False,';')
     -- bodyTag> ('ชั้น','MyClass')
 ?> 

ซึ่งสามารถทำได้ตลอดทั้งไฟล์มุมมองในหลายมุมมองผู้ช่วยเหลือและในแฟ้มรูปแบบ (โดยก่อนหน้าแท็กร่างกายมีการเขียนออกมามัน) คุณสมบัติสามารถลบออกได้ / ค่าในขณะที่เขียนทับได้และสามารถเพิ่มต่อท้าย (คั่นสามารถผ่าน) หากค่าแอททริบิเดียวกันถูกส่งผ่านไปหลายครั้งเพียงสำเนาเดียวจะถูกเขียนที่มีคุณลักษณะ

สำหรับการสาธิตเต็มรูปแบบทั้งส้อม GitHub เก็บและเรียกใช้ไฟล์ demo.php ในเบราว์เซอร์ของคุณเองหรือหรือเยี่ยมชม หน้านี้ เพื่อดูการทำงาน การใช้งานของ demo.php สคริปต์ถือว่าคุณมี Zend Autoloader (หรือคล้ายกัน) การติดตั้งแล้ว

การสร้างแท็กผู้ช่วยของคุณเอง

ในการใช้งานผู้ช่วยมุมมองของคุณเองก็ขยายชั้นแท็กนามธรรมและเขียนทับสมบัติชั้นดังต่อไปนี้

  • $ _regKey : คีย์ไม่ซ้ำกันสำหรับแท็ก (ใช้สำหรับ Zend_Registry)
  • $ _validAttributes : อาเรย์ของชื่อคุณลักษณะที่ถูกต้องควรเป็นตัวพิมพ์เล็กเพื่อให้สอดคล้องกับ W3C
  • $ _selfClosing : ค่าบูลีนเพื่อระบุว่าแท็กปิดตัวเองหรือไม่เช่น <br/>
  • $ _tagName : ชื่อของ) แท็ก IE (ตัวนี้ในตัวอย่าง

ดังนั้นในที่สุดโค้ดสำหรับผู้ช่วยเหลือดู bodyTag ตัวเองมากกะทัดรัด :

 / ** * ช่วยดูสำหรับแท็กร่างกาย * * @ ผู้เขียน Watkin Lloyd * @ ตั้งแต่ 21/08/2010 * @ แพกเกจ * Pro @ subpackage * ViewHelper Pro_View_Helper_BodyTag ชั้น / ขยาย Pro_View_Helper_AbstractTag {/ ** * รีจิสทรีคีย์สำหรับตัวยึด * * @ * สาย / var / ป้องกัน $ _regKey ='Pro_View_Helper_BodyTag'; / ** * ซึ่งมีคุณลักษณะ * * ถูกต้องขณะนี้ได้รับการสนับสนุนคุณลักษณะเฉพาะ STF * (S = เข้มงวด, T = ช่วงการเปลี่ยนแปลง, F = FRAMESET) * * @ ดู http://www * * .w3schools.com/tags/tag_body.asp อาร์เรย์ @ var / ป้องกัน $ _validAttributes อาร์เรย์ (= / * * มาตรฐานคุณสมบัติ'dir''ชั้น'/,,'id','lang','รูปแบบ','ชื่อเรื่อง ',' XML : lang', / * * คุณสมบัติกิจกรรม /'OnClick,'ondblclick'','onload','onmousedown','onmousemove,'onmouseout'','onMouseOver','onmouseup','onkeydown', 'onkeypress','onkeyup','onunload',) / * Self ** แท็กปิดหรือไม่?  * * * บูลีน @ var / _selfClosing $ ป้องกัน = false; / ** * ชื่อแท็ก * * * สตริง @ var / ป้องกัน $ _tagName'ร่างกาย';} 

ถ้าคุณดูที่พื้นที่เก็บข้อมูลนอกจากนี้ยังมีกลุ่มของการทดสอบของหน่วยงานที่ครอบคลุมการทำงานอย่างเต็มที่ ทดสอบหน่วยจะถูกเขียนใน PHPUnit และอยู่ใน BodyTagTest.php ไฟล์

สุดท้าย ...

ที่นี่ฉันได้แสดงให้คุณดำเนินการตามแท็กนามธรรมช่วยดูบทคัดย่อ (eek) และการปฏิบัติของฉันแท็กของร่างกาย ขณะที่หน้าที่การใช้งานจาวาสคริปต์สามารถจะดำเนินการในรูปแบบอื่น ๆ (ที่นอกเหนือจากการเข้ารหัสอย่างหนักในเวลาส่งออก) สิ่งอื่น ๆ ไม่ (โดยไม่ต้องใช้จาวาสคริปต์ที่มี) โดยไม่เปลี่ยนแปลงส่วนอื่น ๆ ของโปรแกรม ฉันหวังว่าคุณจะหาชั้นเรียนที่เป็นประโยชน์ในการสมัครของคุณ ...

3 ตอบไปที่"ตัว Tag Zend Framework Helper View"

  1. linker automagic ของฉันมีปัญหาที่เกิดในในรหัสสำหรับ XML เพื่อโปรดเพิกเฉยต่อปัญหาที่ :)

  2. [...] ต้นฉบับที่นี่ Evilprofessor.co.uk » Zend Framework Body Tag ดูผู้ช่วยเหลือใด ๆ [...]

  3. [...] เพิ่มเติมจากแหล่งต้นฉบับ : Evilprofessor.co.uk » Zend Framework Body Tag ดูผู้ช่วยแบ่งปันและ [...]

ปล่อยให้ตอบกลับ













ชุดรูปแบบพาโนรามาโดย Themocracy

7 ผู้เข้าชมออนไลน์ขณะนี้
5 แขก, 2 บอ, 0 สมาชิก
ผู้เข้าชมสูงสุดวันนี้ : 23 ที่ 04:19 UTC
เดือนนี้ : 26 ที่ 2011/07/05 12:35 UTC
ปีนี้ : 130 ที่ 28-03-2011 10:40 UTC
เวลาทั้งหมด : 130 ที่ 28-03-2011 10:40 UTC