(Opencart) Как загрузить контроллер в функцию и не нарушать AJAX с этой функцией? - PullRequest
0 голосов
/ 06 мая 2019

Есть ли способ загрузить контроллер (продукт / категорию) в некотором ограниченном пространстве, чтобы не нарушался переход к пользовательской функции внутри этого контроллера?

Я в основном загружаю (из ajax) пользовательскую функцию, которая находится внутри продукта / категории основного контроллера. В этой функции мне необходимо перезагрузить контроллер продукта / категории, чтобы получить новый список продуктов на основе данных AJAX, которые я отправил в функцию, а затем вернуть его в ответ на исходный AJAX.

Когда я пытаюсь сделать

$this->load->controller('product/category')

это ajax, который я настроил с помощью функции, и в консоли я вижу 404.

Я пытался использовать

$foo = $this->load->controller('product/category')

и это работает, но мне нужно также выполнить

$this->load->view('product/category')

и я не знаю, как это сделать, не нарушив ajax.

1 Ответ

0 голосов
/ 06 мая 2019

По сути, я сделал то, что по сути хотел (см. Середину моего вопроса, а именно часть о крайней необходимости обновить мой список продуктов с помощью ajax) другим способом (после прочтения Как получить продукты в формате JSON из OpenCart с использованием phonegap / jQueryMobile ): из ajax я напрямую вызывал продукты / категорию, а не свою пользовательскую функцию внутри контроллера продукта / категории, как в вопросе, и когда я получил ответ, содержащий вывод html вид, я перезагрузил div, который я сделал в product / category.twig с этим HTML, используя jQuery. Аякс был

    $(document).ready(function(){
    $.ajax({
        url: 'index.php?route=product/category&path=18&json',
        type: 'get',
        beforeSend: function() {
        },
        complete: function() {
        },
        success: function(data) {
            console.log('success');     
            if (data.length > 0) {
                console.log(data); 
                $('#mydiv').html(data);
            }
        }
    });
    });

и код, который я добавил в product / category.php, был

    if(isset($this->request->get['json'])) {
        $this->response->setOutput($this->load->view('product/view_for_mydiv', $data));
    } else {
        $this->response->setOutput($this->load->view('product/category', $data));           
    }  

Как вы можете заметить, я добавил div внутри product / category.twig с именем mydiv, который я поместил именно туда, куда хотел добавить html, а затем создал ветку view_for_mydiv.twig в папке default / product / category /, HTML-код, который контроллер продукта / категории отправит обратно вместо своей общей ветки, когда увидит, что ему был сделан вызов ajax. Div #mydiv, расположенный внутри category.twig, оборачивает html, который является тем же html, который создается, когда view_for_mydiv.twig используется для визуализации продукта / категории.

...