ดังที่ @Cags กล่าวว่าสิ่งนี้เป็นไปไม่ได้ (ง่าย) เนื่องจากต้นไม้ ACL ถูกโหลดเมื่อเริ่มต้นเซสชัน (AKA เมื่อผู้ดูแลระบบลงชื่อเข้าใช้)
วิธีแก้ปัญหาที่เป็นไปได้คือการแทนที่_isSectionAllowed
เมธอดในตัวควบคุมการกำหนดค่าระบบ: ( Mage_Adminhtml_System_ConfigController::_isSectionAllowed
) และทำให้รีโหลดต้นไม้ ACL
สิ่งที่ต้องการ:
protected function _isSectionAllowed($section)
{
$session = Mage::getSingleton('admin/session');
$session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl());//reload the tree
return parent::_isSectionAllowed($secntion); //all the code from the original method
}
แต่นี่หมายความว่าทรี ACL จะถูกโหลดซ้ำทุกครั้งที่คุณเข้าถึงส่วนกำหนดค่า ฉันไม่เห็นจุดประสงค์ในการทำสิ่งนี้
นอกจากนี้คุณไม่สามารถทำได้สำหรับส่วนขยายที่เฉพาะเจาะจงหนึ่งรายการ คุณจะต้องเขียนคลาสหลักใหม่