Как создать Ajax вызов для фильтрации данных для Joomla Admin Component - PullRequest
0 голосов
/ 27 апреля 2020

В моем настраиваемом поле / edit. php Я перечислил сотрудников и добавил несколько полей фильтра: - для имени, - фамилии - и категории. Когда я начинаю вводить одно из полей фильтра, выполняется вызов Ajax.

Шаг 1: Пользовательское поле с кодом jQuery. ajax:

var token = jQuery("#token").attr("name");
var getUrl = "index.php?option=com_component&task=employeesearch&format=json";
jQuery.ajax({
    type: "POST",
    url: getUrl,
    data: {[token]: "1", task: "employeesearch", format: "json", arfilter: arfilter},
    success: function(result, status, xhr) { displaySearchResults(result); },
    error: function() { console.log(\'ajax call failed\'); },
});

(Массив arFilter имеет значения полей фильтра.)

Шаг 2: Главный контроллер: В главном контроллере добавлена ​​функция employeeesearch. Дисплей функции «по умолчанию» также существует в этом главном контроллере. Задача: «employeeesearch».

public function employeesearch()  {
    echo '<script>alert("DEBUG: main controller.php employeesearch function")</script>';
    if (!JSession::checkToken('get')) {
        echo new JResponseJson(null, JText::_('JINVALID_TOKEN'), true);
    } else  {
        parent::display();
    }
}

После выполнения вызова Ajax в главном контроллере не выполняется ни одной функции (отображение «по умолчанию», employeeesearch).

Шаг 3: Admin / com_comoponent / views / employee / view. json. php У меня нет кода здесь, сначала я хочу узнать, что это выполняется. Я думаю, если правильно прочитать документацию, следует выполнить, потому что формат json.

class ComponentViewEmployee extends JViewLegacy {
    function display($tpl = null) {
        //$input = JFactory::getApplication()->input;

        echo "view.json.php - display function";
    }

Шаг 4: Admin / com_comoponent / models / employee. php

А пока я добавил сюда функцию getEmployeeSearchResults

public function getEmployeeSearchResults($arEmployee) {
    try {
         echo "model getemployeesearchResults($arEmployee) {
         result = "Query executed";
    }
        catch (Exception $e) {
            $msg = $e->getMessage();
            JFactory::getApplication()->enqueueMessage($msg, 'error'); 
            //$results = null;
            $result = null;
    }
    return $result;
}

В журнале консоли я получаю каждый раз "Ajax call failed", который является сообщением об ошибке вызова Ajax ,

Я попытался проанализировать его с помощью "инструментов разработчика браузера", там я вижу "http://jcbworkshop2/administrator/index.php?option=com_component&task=employeesearch&format=json". В XHR сообщение 404.

Я следую за сборкой joomla MVC . Это руководство по интерфейсу, но я думаю, что оно более или менее одинаково, но, возможно, НЕ?

Все примеры, которые я нашел с помощью googling, основаны на представлении внешнего интерфейса.

На данный момент я не знаю, как я могу сделать следующий шаг ????? Как я могу узнать, где это go неправильно?

Я надеюсь, что кто-то может помочь мне дальше и указать мне направление, чтобы я мог идти дальше. Или, если я двигаюсь в совершенно неправильном направлении, в сложное, я надеюсь, что вы дадите мне знать, потому что, конечно, я могу добавить файл, такой как employeeesearch. php, который напрямую вызывается из вызова ajax и будет вернуть отфильтрованные значения запроса. Это также работает, но я больше не работаю в структуре фреймворка Joomla ...

Заранее спасибо

Нико

...