Zend Framework ต่อการวางรูปแบบโมดูล -- ตามงาน
ในฐานะที่ติดตามการโพสต์ก่อนหน้านี้ของฉันใน โมดูลต่อการวางรูปแบบตาม การ Zend Framework เราได้ปรับปรุงก่อนที่รหัสขึ้นไป แต่ไม่จำเป็นต้องกำหนดค่าแล้ว (ไม่ว่าจะต้องเพิ่มเติมว่าไม่กี่บรรทัดในการกำหนดค่าใบสมัครของคุณ!)
อีกครั้งเราจะใช้ประโยชน์จาก การดำเนินการช่วยเหลือ Zend Controller อ้างจาก bootstrap ดังต่อไปนี้
/ **
* ตั้งค่า สคริปเลย์เอาต์ บนพื้นฐานต่อโมดูล
* /
_initLayoutHelper ฟังก์ชั่นการป้องกัน ()
{
$ this -> bootstrap ('frontController');
$ เค้าโครง = Zend_Controller_Action_HelperBroker : : addHelper (
Pro_Controller_Action_Helper_SetLayoutPath ใหม่ (APPLICATION_PATH));
}
เกือบจะว่ากันเป็นมาก่อนยกเว้นครั้งนี้พวกเราผ่าน APPLICATION_PATH คงเป็นตัวสร้างฐานของเราเป็นเส้นทาง
ถัดไปผู้ช่วยดำเนินการควบคุมตัวเองขณะนี้มีลักษณะดังต่อไปนี้
/ ** * ตั้งค่าเส้นทางรูปแบบบนพื้นฐานต่อโมดูล * * @ ผู้เขียน Watkin Lloyd * @ ตั้งแต่ 16/02/2010 แพคเกจ * @ Pro * subpackage @ Controller_Action_Helper * / / ** * ตั้งค่าเส้นทางรูปแบบบนพื้นฐานต่อโมดูล * * @ ผู้เขียน Watkin Lloyd * @ ตั้งแต่ 16/02/2010 แพคเกจ * @ Pro * subpackage @ Controller_Action_Helper * / Pro_Controller_Action_Helper_SetLayoutPath ชั้น Zend_Controller_Action_Helper_Abstract ขยาย { / ** * เส้นทาง Base * * @ var สตริง * / ป้องกัน $ _path; / ** * ก่อสร้าง * * @ param $ เส้นทางสาย * / ทำงานสาธารณะ __construct ($ ธ ) { setBasePath $ this -> ($ เส้นทาง); } / ** * เส้นทางที่ตั้งฐาน * * @ param $ เส้นทางสาย * / setBasePath ทำงานสาธารณะ ($ ธ ) { ถ้า (is_string ($ ธ ) |! | ว่าง ($ เส้นทาง)) { โยน Exception ใหม่ ('สตริงยกเว้นสำหรับเส้นทางฐาน'); } $ this -> _path เส้นทาง = $; } / ** * รับเส้นทางฐาน * * สตริงกลับ @ * / _getBasePath ฟังก์ชั่นการป้องกัน () { ถ้า (is_null ($ this -> _path)) { if (! กำหนด ('APPLICATION_PATH')) { โยน Exception ใหม่ ('path Base ไม่สามารถหา'); } $ this -> _path APPLICATION_PATH =; } กลับ _path $ this ->; } / ** * เส้นทางชุดรูปแบบขึ้นอยู่กับโมดูล * / preDispatch ทำงานสาธารณะ () { $ โมดูล preg_replace = ( '/ [^ AZ] / i', '', $ this -> getRequest () --> getModuleName () ); if ($ bootstrap = getActionController $ this -> () -- getInvokeArg> ('bootstrap')) { $ ดู = getResource $ bootstrap -> ('มุมมอง'); $ layoutPath = _getBasePath $ this -> () "/ โมดูล / {$} รูปแบบโมดูล / สคริปต์ / /"; / * ถ้าไดเรกทอรีที่มีอยู่แล้วใช้เลย์เอาต์ไว้มิฉะนั้นแล้วก็ตก * กลับมาเริ่มต้น * / if (is_dir ($ layoutPath)) { getActionController $ this -> () -- getHelper> ('รูปแบบ') -- setLayoutPath> ($ layoutPath); $ ดู -> headLink () --> appendStylesheet ( "/ รูปแบบ / {$ โมดูล} style.css /" ); } } } }
หมายเหตุผ่านของเส้นทางฐาน (เทียบ APPLICATION_PATH) ในคอนสตรัคของเราแล้วเรายังมี Getter และตัวตั้งค่าสำหรับเส้นทางฐาน ซึ่งแตกต่างจากรุ่นก่อนหน้าของรหัสหากเส้นทางการเลย์เอาต์ไม่มีแล้วรหัสจะถอยกลับเส้นทางรูปแบบเริ่มต้น หากเส้นทางหลักไม่ได้กำหนดก็จะพยายามที่จะกำหนดเส้นทางฐานจาก APPLICATION_PATH คงมิฉะนั้นจะโยนข้อยกเว้น ฉันยังได้โยน cheekily ในสไตล์ชีตโมดูลที่ใช้สำหรับการวัดที่ดี
ตามรูปแบบโมดูลจะพิจารณาจากว่าเส้นทางสคริปเลย์เอาต์มีอยู่ (แต่แน่นอนวิธีการนี้สามารถเปลี่ยนแปลงได้อย่างง่ายดาย) นี้จะเพิ่มค่าใช้จ่ายเพียงเล็กน้อยจากการตั้งค่า application.ini (แต่ถ้าเส้นทางเค้าโครงอยู่ PHP จะแคช * สำหรับผลการดำเนินงาน) แต่ในทางกลับกันให้คุณได้รับเพิ่มความสะดวกสบายของได้ง่ายขึ้นลดลงในโมดูลใหม่
ที่มันไม่แตกต่างกันมาก แต่คุณไม่จำเป็นต้องเพิ่มรายการการกำหนดค่าใหม่ทุกครั้งที่คุณต้องการที่จะเพิ่มโมดูลใหม่แต่ละ :)
* หากต้องการล้างแคชนี้ (ถ้าจำเป็น) ใช้ clearstatcache ฟังก์ชั่น


















































สวัสดีกรุณาช่วยบอกฉันว่าจะสร้าง Pro_Controller_Action_Helper_SetLayoutPath ชั้นกับที่ชื่อไฟล์
ฉันใน Zend Newbie
ขอบคุณ
Hi Behrang สร้างการดำเนินการกับผู้ช่วยเหลือใดชื่อที่คุณชอบฉันมี'ห้องสมุด'ของตัวเองกับมสเปซ'Pro' คุณได้อย่างง่ายดายเพียงแค่เรียกว่า'SetLayoutPath'ชั้นเรียนและนำไปใช้ที่เคยคุณต้องการให้รหัสสามารถค้นหาได้และคุณจำเป็นต้องขยายชั้นเรียน