나는 사용자 정의 모듈을 가지고 있으며 add()
함수를 checkout/cart
에서 호출하려고합니다. 컨트롤러와 기능을 어떻게 호출합니까?OpenCart 다른 컨트롤러 호출
나는 $this->load->controller('checkout/cart');
을 시도했지만 치명적인 예외를 반환합니다. 내가 OpenCart 1.5 OpenCart의 V 1.5.6.4
나는 사용자 정의 모듈을 가지고 있으며 add()
함수를 checkout/cart
에서 호출하려고합니다. 컨트롤러와 기능을 어떻게 호출합니까?OpenCart 다른 컨트롤러 호출
나는 $this->load->controller('checkout/cart');
을 시도했지만 치명적인 예외를 반환합니다. 내가 OpenCart 1.5 OpenCart의 V 1.5.6.4
을 사용하고
는. *, getChild
다른 컨트롤러를로드하는 데 사용됩니다. 특히 원하는 컨트롤러 및 기능으로의 경로를 실행 중입니다. 예를 들어, common/home
은 common
그룹/폴더에서 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
에코입니다.
동일한 문제를 해결하기 위해 $ this-> load-> controller ("checkout/cart/add")를 사용합니다.
getChild를 사용하는 경우이 예외는 "정의되지 않은 메서드 Loader :: getChild()"를 호출합니다.
2 가지 방법의 차이점은 무엇입니까? getChild가 더 좋습니까?
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);
위의 코드는 OpenCart 1.5.6.4 작동합니다. v2를 사용하고 있습니까? –
예, v2를 사용 중입니다. 그게 다 무슨 일이야? –
나는 그렇게 생각합니다. 내가 사용중인 OC 버전을 반영하여 내 질문과 답변을 편집합니다. 미래의 방문자가 두 가지 해결책을 모두 볼 수 있고 가장 필요한 것을 사용하도록 답을 남겨 두는 것이 좋습니다. –