2010-11-23 3 views
1

내 관리자 그리드에 대한 맞춤 위젯/격자/열을 사용하여 축소판 이미지를 표시하고 모든 것이 작동하는 모듈을 만들었습니다. 이제 동일한 프로젝트에서 동일한 작업을 수행하는 다른 모듈을 만들어야하지만 이미지 열은 작동하지 않습니다. 그것은 새로운 클래스를로드하지 않는 것처럼 보입니다. 왜냐하면 내가 파일에 넣은 stmt를 실행하지 않기 때문입니다. 나는 텍스트를 타입으로 바꾼다면 DB로부터 올바른 정보가 필드로 채워진다. 그러나 새로운 '이미지'유형으로 변경하면 셀이 비어 있습니다. 아무도 왜 작동하지 않을지 알고 있습니까?magento 다시 쓰기가 작동하지 않습니다.

ABT/배경/등/config.xml에 < <는

<global> 
    .... 
    <blocks> 
     <background> 
      <class>ABT_Background_Block</class> 
     </background> 
     <adminhtml> 
      <rewrite> 
       <widget_grid_column>ABT_Background_Block_Widget_Grid_Column</widget_grid_column> 
      </rewrite> 
     </adminhtml> 
    </blocks> 
    .... 
</global> 

내가 나를 얻을 복사 및 실행이 동일한 구성 설정을 가지고 있지만 아직 잘 작동 모듈을 작동하지 않습니다 ABT/기능/등/config.xml에 < <이 제대로 나는 '

<global> 
    .... 
    <blocks> 
     <feature> 
      <class>ABT_Feature_Block</class> 
     </feature> 
     <adminhtml> 
      <rewrite> 
       <widget_grid_column>ABT_Feature_Block_Widget_Grid_Column</widget_grid_column> 
      </rewrite> 
     </adminhtml> 
    </blocks> 
    .... 
</global> 

답변

2

다음은 Magento에서 클래스를 다시 작성할 때 발생합니다. 마 젠토는 블록 클래스를 인스턴스화 할 때

, 그것은 createBlock 방법은 공장 다음

$this->getLayout()->createBlock('adminhtml/widget_grid_column') 

같은 코드 뭔가를 사용한다. Magento는 어떤 클래스가 인스턴스화되어야하는지 조회하려면 식별자

adminhtml/widget_grid_column 

을 사용합니다. 기본적으로, 그것은 당신이 당신의 재 작성을 만들 때, 당신은

헤이 마 젠토

을 이야기하고

Mage_Adminhtml_Block_Widget_Grid_Column 

입니다. 대신 'adminhtml/widget_grid_column'에 대한 'Mage_Adminhtml_Block_Widget_Grid_Column'를 사용, 당신은 'ABT_Background_Block_Widget_Grid_Column'

이 어떤 주어진 시스템, 클래스 만 번 를 다시 작성 될 수 있음을 의미 사용해야합니다. 위에 표시된 코드에서 클래스를 두 번 다시 작성하려고합니다. 귀하의 재 작성 중 하나만 이길 것입니다.

빠른 접근 방식은 하나의 재정의 클래스에서 모두 사용자 정의를 유지하는 것입니다.

더 일반적으로 가능한 경우 모두 다시 쓰기를 사용하지 않습니다. 그것들은 강력한 시스템이지만, 아껴서 사용해야합니다. 그리드 커스터마이징을 많이 해보지는 않았지만 일반적인 시도는 adminhtml 레이아웃을 변경하여 내 맞춤 모듈에서 새로운 그리드 클래스를 인스턴스화하는 것입니다. 을 사용하여 기존 그리드 클래스를 확장 할 수 있습니다. 사용자 정의 열 클래스.

더 많은 작업을 앞두고 있지만 일단 기술을 이해하면 반복되는 기술을 반복적으로 사용할 수 있으며 재 작성에서 발생하는 충돌을 걱정하지 않아도됩니다.

+0

이것은 내가하고있는 것보다 나은 접근 방법처럼 들립니다. 위에서 말했듯이 이것은 모든 것이 처음 인 magento가있는 첫 번째 프로젝트입니다. 당신이하는 일을하면서 절뚝 거리는 데 도움이 될만한 자원을 알면 어떻게 될까요? – veilig

+0

불행히도, 나는 그렇지 않습니다. Magento에 관해 온라인으로 작성된 대부분의 기사는 레시피 기반입니다. "이런 일이 일어나도록하려면이 작업을 수행하십시오."대부분은 다시 작성 방법을 좋아합니다. 최대한 빨리 작업을 수행해야한다면, 내가 가진 접근 방법을 계속 사용하되 단일 대체 클래스 메소드에 추가 로직을 추가하십시오. 필자는 자신에게 권장했던 방식대로 시스템을 이해하는 데 도움이되는 심도있는 기사 (플러그 : http://alanstorm.com/category/magento)를 작성했지만 학습 곡선이 필요합니다. 극복되어야한다. –

+0

오, 글쎄, 나는이 일을하기에 충분히 비틀 거리다. 귀하의 통찰력과 웹 사이트에 감사드립니다. – veilig

1

작동 제대로 설치가되지 않았습니까?

어쨌든 동일한 클래스에 두 개의 재정의 규칙이있는 것으로 보입니다. Widget_Grid_Column. 로드 된 마지막 모듈은 ABT_Feature이므로 해당 블록의 규칙이 ABT_Background 모듈의 규칙을 덮어 씁니다.

  1. 하나 하나
  2. 의 기능 및 배경 모듈을 병합 배경 하나에 따라 기능 블록을하고 ABT_Feature_Block_Widget_Grid_Column 클래스를 확장 할 수 있도록 재 작성 규칙을 업데이트 :

    당신은 두 가지 솔루션을 가지고 ABT_Background_Block_Widget_Grid_Column.

+0

아마도이 설정이 제대로되어 있지 않을 수도 있습니다. 이것은 Magento에서 처음으로 작업 한 것으로,이 새로운 가이드를 따라 간단하게 작업 할 수 있습니다. http://www.krishnasunuwar.com.np/2009/07/ecommerce-software-magento-showing-image-in-grid/ – veilig

관련 문제