2017-10-11 1 views
1

My Prestashop 기반 사이트는 현재 AdminOrdersController.php에 대한 재정의가 있습니다. 재정의 폴더에 배치했습니다.Prestashop 1.6 캐리어 필터를 표시하는 모듈 작성

아래 제공된 링크에서 Prestashop 1.6에서 사용할 수없는 Carrier 필터를 추가해도 문제가 없습니다. 솔루션을 시도하고 완벽하게 작동합니다.

참조 : Adding carrier filter in Orders page.

불행하게도, 생산 현장, 나는 핵심 파일과 같은 구현할 수없는 액세스 할 수 없습니다. 따라서 맞춤 모듈을 만들어야합니다. 이미 AdminOrdersController.php에 대한 재정의 (override)가 있음을 주목하십시오. 이 재정의를 탭하고 필터를 삽입하고 싶습니다.

모듈을 관리 할 수 ​​있었고 URL에 제공된 코드로 덮어 쓰기를 캐리어 필터 기능이있는 mymodule/override/controller/admin/AdminOrdersController.php에 배치하려고했습니다.

변경/효과가 없었으므로 당혹 스럽습니다. .tpl 파일을 생성하거나 복사해야합니까?

모든 안내를 크게 듣습니다.

감사합니다.

답변

1

링크 된 질문의 답이 잘 작동하는 동안 모듈만으로 동일한 작업을 수행 할 수 있습니다 (재정의 필요 없음).

관리 컨트롤러에는 목록 필드 수정을위한 후크가 있습니다. 동일한 이름을 가진 두 개가 있지만 params 배열에 다른 데이터가 있습니다.

actionControllernameListingFieldsModifier 필터가 목록에 적용되기 전에 실행됩니다.

actionControllernameListingFieldsModifier은 DB에서 데이터를 가져오고 목록을 렌더링하기 전에 실행됩니다.

그래서 당신은 당신의 모듈 파일에서이 같은 기존의 컨트롤러 목록 정의에 필드를 추가 할 수 있습니다 : 배열 데이터를 참조로 $params 배열에 전달되는

public function hookActionAdminOrdersListingFieldsModifier($params) { 
    if (isset($params['select'])) { 
     $params['select'] .= ', cr.name'; 
     $params['join'] .= ' LEFT JOIN `'._DB_PREFIX_.'carrier` cr ON (cr.`id_carrier` = a.`id_carrier`)'; 
    } 
    $params['fields']['carrier'] = array(
     'title' => $this->l('Carrier'), 
     'align' => 'text-center', 
     'filter_key' => 'cr!name' 
    ); 
} 

때문에 당신이 당신의 후크를 수정하고 변경 사항이 다시 지속 컨트롤러에 연결하십시오. 이렇게하면 목록 맨 끝에 이동 통신사 열이 추가됩니다.

모듈 후크를 통해 문제를 해결하고 정말로 후크로 해결할 방법이없는 경우에만 시도하고 우선 적용하여 문제를 해결하는 것이 좋습니다.

+0

Noted. 제안 해 주셔서 감사합니다. 제안한 훅을 기반으로 페이지를 편집 할 수있었습니다. 코드를 실행할 수 없지만 오류가 반환됩니다. – Enthu

+0

$ params [ 'select']. = ' , cr.name as carrier '; $ params ['join ']. ='LEFT JOIN ''._DB_PREFIX _. 'carrier' cr ON (cr.'id_carrier' = a.'id_carrier') '; $ params [ 'fields'] [ 'carrier'] = 배열 ​​( '제목'=> $ this-> l ('운송 업체'), '정렬'=> '텍스트 센터' ); 이것은 오류를 반환합니다 : 'where 절'의 알 수없는 열 'carrier' – Enthu

+0

반송파 필터로 주문 표시를 표시하고 있지만 검색 상자에 입력 할 때 오류가 발생합니다. 그 후에는 실패합니다. – Enthu

0

/cache/class_index.php를 삭제하셨습니까? 재정의를 적용하려면 필요합니다. 여전히 작동하지 않으면 AdminOrderControllers 메서드에서 호출 한 후크를 사용하여 새 모듈로 처리 할 수 ​​있습니다.

+0

주목할만한 점은 후크가 나를 위해 작동 할 수 없다면이 방법을 시도 할 것입니다. 무시하지 않는 것이 가장 좋습니다. 그러나 나는 하루 동안 무시하려고 노력해 왔습니다. : – Enthu