system.xml 구성으로 새 확장을 설치할 때 Magento에 표시되는 매우 일반적인 오류입니다 .
System->Configuration->Extension
탭으로 이동 하면 404 오류가 표시됩니다. 로그 아웃했다가 다시 로그인해야합니다. 그러나 이것을 피할 수있는 방법이 있습니까?
system.xml 구성으로 새 확장을 설치할 때 Magento에 표시되는 매우 일반적인 오류입니다 .
System->Configuration->Extension
탭으로 이동 하면 404 오류가 표시됩니다. 로그 아웃했다가 다시 로그인해야합니다. 그러나 이것을 피할 수있는 방법이 있습니까?
답변:
@Cags가 말했듯이 세션이 초기화 될 때 (관리자가 로그인 할 때 AKA) ACL 트리가로드되기 때문에 (쉽게) 가능하지 않습니다.
가능한 해결 _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 트리가 다시로드됨을 의미합니다. 나는 이것을하는 데 아무런 의미가 없다.
또한 하나의 특정 확장에 대해서는 그렇게 할 수 없습니다. 핵심 클래스를 다시 작성해야합니다.
나는 거의 사용자 정의하지 않고이 문제를 해결할 방법을 찾았습니다. 우리가 필요한 것은 :
ACL을 다시로드하고 (로그 아웃 및 로그인하지 않은) 새로운 컨트롤러 작업은 이전 페이지로 다시 리디렉션됩니다.
class SSE_AclReload_Adminhtml_Permissions_AclReloadController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$session = Mage::getSingleton('admin/session');
$session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl());
Mage::getSingleton('adminhtml/session')->addSuccess($this->__('ACL reloaded'));
$this->_redirectReferer();
}
}
admin_noroute
핸들 의 레이아웃 업데이트 . 이 새 컨트롤러 작업에 대한 링크를 관리자 404 페이지에 직접 추가합니다.
<layout version="0.1.0">
<adminhtml_noroute>
<reference name="content">
<block type="adminhtml/template" name="content.aclReload" after="content.noRoute" template="sse_aclreload/button.phtml" />
</reference>
</adminhtml_noroute>
</layout>
링크가있는 템플릿 :
<a href="<?php echo $this->getUrl('adminhtml/permissions_aclReload/index'); ?>">
<?php echo $this->__('Reload ACL'); ?>
</a>
Github에서 SSE_AclReload 의 작은 확장으로 함께 던졌습니다 ( 시스템> 권한 메뉴 에도 링크를 추가 합니다)
admin / noroute 조치가 전달되 자마자 ACL을 자동으로 다시로드하려고 시도 할 수도 있지만 1) 진행중인 작업을 알고 2) 선택할 수있는 것을 선호합니다.
새 확장 프로그램을 설치할 때 문제가 발생하면 404 오류 페이지가 표시되면 한 가지만 수행하면됩니다 System > Permissions > Roles
. 그냥 역할을 저장하고 삭제하는 것을 잊지 마세요 var/cache
과 var/seesion
그리고 문제가 해결되었습니다.