Не удается загрузить пользовательский контроллер в Opencart 2

Я создал собственный контроллер в "admin/controller/mycustomcontroller/mycustomcontroller.php" для обработки некоторых запросов AJAX среди прочего для моих серверных модулей. Этот пользовательский контроллер содержит метод add(), который я собираюсь использовать.

Ситуация:

  • Я дал права на чтение/запись группе пользователей «Администратор».
  • Вызов метода add моего пользовательского контроллера через AJAX работает нормально.
  • То же, что и доступ к нему напрямую через URL route=mycustomcontroller/mycustomcontroller.php/add

Проблема:

  • Я не могу загрузить контроллер, используя:

    $this->load->controller('mycustomcontroller/mycustomcontroller/add');
    

    Я попытался загрузить его в файл admin/controller/catalog/product.php и в файл моей модели, но он ничего не возвращает (ни результата, ни ошибки, ничего).

Я новичок в Opencart и не знаю, в чем проблема, в худшем случае я просто направлю URL-адрес файла контроллера, но это не кажется правильным.


person A. Hecham    schedule 07.08.2015    source источник


Ответы (1)


После многих тестов я наконец нашел проблему, и это довольно глупо.

Допустим, вы хотите, чтобы ваш контроллер возвращал закодированную строку json, чтобы вы могли использовать ее в своем javascript, вы можете написать (по привычке):

$this->response->setOutput(json_encode($result));

Большая ошибка! Настройка вывода с помощью этой функции не будет учитываться при вызове метода load->controller(), поэтому даже если ваш AJAX/JS по-прежнему будет работать нормально, ничего другого не будет. вместо этого используйте:

return json_encode($result)   

Тот факт, что никто раньше не сталкивался с этой проблемой, меня удивляет, я либо глуп, либо упускаю что-то важное в документации OC.

person A. Hecham    schedule 07.08.2015