OctoberCMS Ajax Сортировка в интерфейсе

Я ищу наилучшую практику сортировки списка в интерфейсе с помощью ajax.

Итак, у меня есть компонент, который перебирает все элементы. Затем боковую панель с флажками для фильтрации с использованием Ajax. Каждый флажок будет категорией и будет содержать фильтр, проверяя этот фильтр.

В моем компоненте default.htm у меня есть

{% set items = __SELF__.items %}

<div class="col-md-12" id="results">
{% for item in items %}

<ul>
    <li>{{ item.title }} - {{ item.description }}</li>
</ul>


{% endfor %}   
</div>

и кнопку, пока я не заработаю, чтобы переключиться на флажки.

<button class="btn btn-default"
data-request="onHandleForm"
data-request-update="#results">
Go

и в файле плагинов моих компонентов

// Fetches everything
public function onRun() {

    $order = items::orderBy('id', 'asc');
    $this->items = $order->get();

}

function onHandleForm()
{

    // Fetch all of the items where category is 2 for test purposes
    $order = items::orderBy('id', 'desc')->where('category','2');
    $filter = $order->get();

    $this->page['items'] = $filter;

}

Тем не менее у меня проблемы с частичным, не найденным. Вышеупомянутое довольно неряшливо, но я просто ищу лучший способ обновить контент (использовать несколько частичных файлов для обновления или просто div?), А также иметь дело с областью.

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

Ответы

Ответ 1

Если вы хотите получить частичные обновления от обработчика, то имя атрибута должно быть

data-request-update="resultsPartialName: '#results'"

Вы можете использовать несколько частичных файлов так же:

data-request-update="firstpartial: '#myDiv', secondpartial: '#otherDiv'"

Другим способом перехода является частичное обновление с помощью обработчика ajax. Мне это кажется немного более чистым, но это только вопрос предпочтения.

function onRefreshTime()
{
    return [
        '#myDiv' => $this->renderPartial('mypartial')
    ];
}

Дополнительная информация в Обновление частичных страниц официальной документации.