2011-04-07 3 views
2

좋아요, 아주 정확하게 저는 레이아웃, 블록 또는 뷰가 포함되지 않은 Magento 관리 모듈을 사용했습니다. 아무것도 표시되지 않습니다. 그러나 모듈의 adminhtml 컨트롤러에서 작업을 호출하면 Magento는 레이아웃 렌더링을 계속 시도하고 실패합니다. "http://www.example.com/index.php/admin/modulename/adminhtml_index/actioname에 대한 소스를로드하지 못했습니다"라고 표시되어 대시 보드로 리디렉션됩니다 (blah, blah).Magento 컨트롤러 동작

지금, 나는 그렇게 같은 캐시 삭제와 같은 익숙한 시스템 행동을 지르고의 순 출력을 검토 한

: http://www.example.com/index.php/admin/cache/flushSystem/key/88848f202df8f254b3db13762ad7e949/를하고 "소스를로드하지 못했습니다 : http://www.example.com/index.php/admin/cache/flushSystem/key/88848f202df8f254b3db13762ad7e949/"와 함께이 너무 응답 모든

첫째, 그렇지 않으면 관리자가 로그인되어 있고 컨트롤러에 대한 작업 권한이 있는지 알 수 없으므로 Mage_Adminhtml_Controller_Action을 확장하는 컨트롤러 여야합니다. 둘째로, 나는 디버깅 시스템을 가지고 있지 않으며 (소프트웨어 엔지니어링에 돈을 쓰는 것이 우리 회사의 몫이다) 사람 디버그 동굴에 가야한다. 그래서 내 질문은 어떻게 지구에서 내 코드를 디버깅하고 레이아웃을로드하고 블록을 렌더링하지 않고 Magento에서 출력을 얻는 것입니까? predispatch 메서드에서 출력을 시도하고 predispatch가 끝나기 전에 끝내기 전에이 작업을 끝내기 위해 프리 디스패치에서 코딩을하지 않는 것이 좋습니다. 어떤 도움이라도 대단히 감사하겠습니다.

+0

만 바보가 회사가 당신은 내 회사의 사항을 알고 있어야합니다 Xdebug는 –

+0

같은 오픈 소스 디버거 너무 가난 비난 할 수 있습니다. –

답변

1

방화범 그것은에 데이터가 없음을 의미합니다 "소스를로드 할 수 없습니다"말할 때 일반적으로 302 리디렉션 중에 표시됩니다. 리디렉션에서는 머리글 만 전송되고 본문은 전송되지 않습니다. 이것은 당신이 겪고있는 것과 일치합니다.

두 번째로 귀하의 URL에는 admin/modulename/adminhtml_index/actionname의 네 부분이 있습니다. Magento에는 "라우터/컨트롤러/액션"과 같은 세 부분 만 있어야하며,이 부분은 귀하의 추가 부분입니까?

적절한 조치가 취해지면 $this->loadLayout()->renderLayout()으로 전화하지 마십시오. 레이아웃이로드 될 수 있습니다. 출력하려면 다른 콘텐츠를 사용 :

$this->getResponse()->setBody($content); 
+0

그러면 302 디스패치를 ​​방지하고 302 리디렉션을 차단하는 방법은 무엇입니까? –

+0

URL이 없기 때문에 리디렉션 중입니다. 대시 보드로 리디렉션하는 것은 관리자가 일반적으로 누락 페이지를 처리하는 방법입니다. – clockworkgeek

+0

그래, 내 문제가 해결되었습니다. 디버깅 후 제거 할 수있는 레이아웃을로드하고 렌더링해야합니다. 감사. –

1

만 구성 패널 다음이 system.xml을 통해 수행되며, ACL은 config.xml에 또는 adminhtml.xml를 통해 설명을 추가해야하는 경우

의 앱을/etc/모듈/Your_Extension.xml는 것

<config> 
    <modules> 
     <Your_Extension> 
      <active>true</active> 
      <codePool>local</codePool> 
     </Your_Extension> 
    </modules> 
</config> 

당신의 응용 프로그램/코드/지역/당신의/확장/등/config.xml 파일은

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Your_Extension> 
      <version>0.1.0</version> 
     </Your_Extension> 
    </modules> 
    <adminhtml> 
     <acl> 
      <resources> 
       <admin> 
        <children> 
         <system> 
          <children> 
           <config> 
            <children> 
             <extension> 
              <title>Extension section</title> 
             </extension> 
            </children> 
           </config> 
          </children> 
         </system> 
        </children> 
       </admin> 
      </resources> 
     </acl> 
    </adminhtml> 
</config> 

그리고 응용 프로그램/코드/지역/당신의/확장/등/system.xml을 것

<?xml version="1.0"?> 
<config> 
    <sections> 
     <extension> 
      <label>extension</label> 
      <tab>sales</tab> 
      <frontend_type>text</frontend_type> 
      <sort_order>306</sort_order> 
      <show_in_default>1</show_in_default> 
      <show_in_website>1</show_in_website> 
      <show_in_store>1</show_in_store> 
      <groups> 
       <general translate="label comment"> 
        <comment><![CDATA[short description for one field extension]]></comment> 
        <label>General</label> 
        <frontend_type>text</frontend_type> 
        <sort_order>1</sort_order> 
        <show_in_default>1</show_in_default> 
        <show_in_website>1</show_in_website> 
        <show_in_store>1</show_in_store> 
        <fields> 
         <enable_extension> 
          <label>Activate extension</label> 
          <frontend_type>select</frontend_type> 
          <source_model>adminhtml/system_config_source_yesno</source_model> 
          <sort_order>1</sort_order> 
          <show_in_default>1</show_in_default> 
          <show_in_website>1</show_in_website> 
          <show_in_store>1</show_in_store> 
          <comment><![CDATA[Activation flag you can access later from code]]></comment> 
         </enable_extension> 
        </fields> 
       </general> 
      </groups> 
     </extension> 
    </sections> 
</config> 

admin 사이드에 하나의 config 필드가 있고 Your_Extension.xml, config.xml 및 system.xml 파일이 3 개만있는 새 확장을 정의하면됩니다.

없음 컨트롤러 이렇게 이제까지 무엇과 컨트롤러의 확인을 위해 확실히 필요없이 관리자가 ACL에 의해 처리되고이로 로그인 한 경우 필요하지

관련 문제