ในฐานะที่เป็นดังต่อไปถึงการโพสต์ก่อนหน้าของฉันเกี่ยวกับ โมดูลที่ใช้การตั้งค่ารูปแบบต่อ สำหรับ Zend Framework ฉันได้ปรับปรุงรหัสที่จะต้องใช้การกำหนดค่าน้อยแล้วก่อนที่จะ (ไม่ว่ามันจำเป็นมากที่ไม่กี่บรรทัดในการกำหนดค่าโปรแกรมประยุกต์ของคุณ!)
อ่านต่อ 'Zend Framework ต่อการวางรูปแบบโมดูล - ติดตาม' »
บทความ , Computing , PHP , Web Programming , Zend Framework |
การกระทำ , ควบคุม , กรอบ , ผู้ช่วย , เค้าโครง , โมดูล , PHP , Zend , Zend Framework
เราได้สร้างการติดตามการโพสต์ที่ต้องใช้การกำหนดค่าน้อยกว่านี้โปรดดู โมดูลเค้าโครง Based - Zend Framework .
เมื่อใช้ กรอบ Zend กับโมดูลของมันเห็นได้ชัดว่าถ้าคุณใช้เว็บไซต์ (ย่อย) ต่างๆปิดโปรแกรมเดียวกันคุณไม่จำเป็นต้องการเดียวกัน สคริปต์รูปแบบ สำหรับแต่ละส่วน ฉันตัดสินใจที่จะไปกับโครงสร้างเว็บไซต์ต่อไปนี้:
แอพลิเคชัน /
ควบคุม /
...
/ โมเดล
/ modules
/ ค่าเริ่มต้น
ควบคุม /
/ เค้าโครง
/ สคริป
/ views
/ สคริป
/ anotherModule
...
/ สคริป
ปัญหาที่เกิดขึ้นได้ในการตั้งค่ารูปแบบสคริปบนพื้นฐานต่อโมดูล คำตอบที่ผ่านมาโดยใช้ตัวช่วยดำเนินการ การตั้งค่ารูปแบบบนพื้นฐานต่อโมดูลเกี่ยวข้องกับสามขั้นตอน:
- Application.ini (หรือการตั้งค่าการกำหนดค่าที่คล้ายกัน):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin รูปแบบ / / คริป"
default.resources.layout.layoutPath = APPLICATION_PATH "modules / / default / เค้าโครง / สคริปต์"
member.resources.layout.layoutPath = APPLICATION_PATH "modules / / สมาชิก / เค้าโครง / สคริปต์"
affiliate.resources.layout.layoutPath = APPLICATION_PATH "modules / / พันธมิตร / เค้าโครง / สคริปต์"
- สร้างตัวช่วยการกระทำของคุณ:
<? PHP
/ **
* ชุดเส้นทางเค้าโครงบนพื้นฐานต่อโมดูล
*
* ผู้เขียน @ <lloyd@evilprofessor.co.uk> ลอยด์ Watkin
* @ ตั้งแต่ 2010/01/01
* /
Pro_Controller_Action_Helper_SetLayoutPath ชั้น
ขยาย Zend_Controller_Action_Helper_Abstract
{
/ **
* เส้นทางเค้าโครงชุดขึ้นอยู่กับโมดูล
* /
preDispatch ฟังก์ชั่นที่สาธารณะ ()
{
โมดูล $ = $ this-> getRequest () - getModuleName> ();
ถ้า (บูต $ = $ this-> getActionController ()
-> getInvokeArg ('บูต')) {
$ config = บูต-> $ getOptions ();
if (isset ($ config [$ โมดูล] ['แหล่ง'] ['เค้าโครง'] ['layoutPath'])) {
$ layoutPath =
[โมดูล $] $ config ['แหล่ง'] ['เค้าโครง'] ['layoutPath'];
$ this-> getActionController ()
-> getHelper ('เค้าโครง')
-> setLayoutPath ($ layoutPath);
}
}
}
} - และสุดท้าย boostrap ผู้ช่วยดำเนินการ:
... / *** ตั้งขึ้นสคริปต์รูปแบบบนพื้นฐานต่อโมดูล * / ฟังก์ชั่นป้องกัน _initLayoutHelper () {$ this-> บูต ('frontController'); Zend_Controller_Action_HelperBroker = เค้าโครง $ :: addHelper (ใหม่ Pro_Controller_Action_Helper_SetLayoutPath ());} .. .