2014-11-19 2 views
0

나는 사용자 정의 모듈을 가지고 있으며 add() 함수를 checkout/cart에서 호출하려고합니다. 컨트롤러와 기능을 어떻게 호출합니까?OpenCart 다른 컨트롤러 호출

나는 $this->load->controller('checkout/cart');을 시도했지만 치명적인 예외를 반환합니다. 내가 OpenCart 1.5 OpenCart의 V 1.5.6.4

답변

2

을 사용하고

는. *, getChild 다른 컨트롤러를로드하는 데 사용됩니다. 특히 원하는 컨트롤러 및 기능으로의 경로를 실행 중입니다. 예를 들어, common/homecommon 그룹/폴더에서 home 컨트롤러를로드합니다. 세 번째 옵션을 추가하여 함수를 지정합니다. 이 경우 '추가'- checkout/cart/add.

class ControllerModuleModule1 extends Controller { 
    protected function index() { 
    ob_start(); 
    $this->getChild('checkout/cart/add'); 
    $this->response->output(); 
    $response = ob_get_clean(); 
    } 
} 

대부분의 컨트롤러는 아무것도 반환하거나 반향하지 않지만 $this->response 개체에 출력 할 내용을 지정합니다. 무엇이 렌더링되고 있는지 얻기 위해서는 $this->response->output();으로 전화해야합니다. 위 코드에서 $response은 json 문자열이며 checkout/cart/add 에코입니다.

2

동일한 문제를 해결하기 위해 $ this-> load-> controller ("checkout/cart/add")를 사용합니다.

getChild를 사용하는 경우이 예외는 "정의되지 않은 메서드 Loader :: getChild()"를 호출합니다.

2 가지 방법의 차이점은 무엇입니까? getChild가 더 좋습니까?

+1

위의 코드는 OpenCart 1.5.6.4 작동합니다. v2를 사용하고 있습니까? –

+0

예, v2를 사용 중입니다. 그게 다 무슨 일이야? –

+0

나는 그렇게 생각합니다. 내가 사용중인 OC 버전을 반영하여 내 질문과 답변을 편집합니다. 미래의 방문자가 두 가지 해결책을 모두 볼 수 있고 가장 필요한 것을 사용하도록 답을 남겨 두는 것이 좋습니다. –

0

getChild()의 문제는 컨트롤러가 $this->response->setOutput() 또는 echo을 최종적으로 호출하여 실제 출력을 생성하는 경우에만 작동합니다. 반면에 가변 응답을 반환하는 컨트롤러 메서드를 호출하려는 경우에는 작동하지 않습니다. getChild()은 전달할 인수를 하나만 허용하기 때문에 하나 이상의 인수를 전달할 수있는 방법이 없습니다 ($args).

public function controller($controller) { 
    $file = DIR_APPLICATION . 'controller/' . $controller . '.php'; 
    $class = 'controller' . preg_replace('/[^a-zA-Z0-9]/', '', $controller); 

    if (file_exists($file)) { 
     include_once($file); 

     $this->registry->set('controller_' . str_replace('/', '_', $controller), new $class($this->registry)); 
    } else { 
     trigger_error('Error: Could not load controller ' . $controller . '!'); 
     exit();     
    } 
} 
: 당신은 것 모델을 컨트롤러를로드하고 당신과 같은 방법으로 방법입니다 호출 할 수 있습니다

내 솔루션은 시스템에 1.5.6.4이 비트를 추가하는 것이 었습니다/엔진/loader.php

이제 당신은이 작업을 수행 할 수 있습니다

$this->load->controller('catalog/example'); 
$result = $this->controller_catalog_example->myMethod($var1, $var2, $var3); 
관련 문제