@astaxov81

Как динамически изменить количество отображаемых элементов на странице?

Здравствуйте.
Создана страница для вывода категорий:
5e87509654bf0858000044.png
Для вывода и разделения на страницы использую:
paginate()

public function index()
{
    $params = [
        'paginator' => BlogCategory::paginate(99),
    ];

    return view('admin.blog.categories.index')
        ->with($params);
}


Возможно ли реализовать динамическое изменение количества элементов на странице? То есть в представление добавить
<select>

<select>
        <option>10</option>
        <option>20</option>
        <option>50</option>
</select>


По умолчанию загружать, например, 10 и при изменение данного значения менять количество элементов на странице (повторно обращаться к BlogCategory::paginate(getValue)).

Первое, что пришло в голову - ajax, накидал скрипт:
ajax запрос

$('select#show_count_element').on('change', function () {
            let SELECTING_ELEMENT = $(this).children(':selected').val();
                $.ajax({
                    url: ROUTE,
                    type: 'GET',
                    data: {countElements: SELECTING_ELEMENT},
                    success: function (data) {
                        console.log(data)
                    },
                    error: function (data) {
                        console.log(data)
                    }
                });
        });


После чего понял, что не все так просто, так как мне не понятно:
а. как передать полученное значение в контроллер,
б. как повторно вызвать метод paginate

Может есть уже варианты решения подобной задачи или меня "понесло" не в ту степь. Буду благодарен за любую подсказку.
  • Вопрос задан
  • 417 просмотров
Решения вопроса 1
Sanes
@Sanes
Get параметром передать кол-во.
Я так сделал у себя.
public function dataIndex(Request $request, $id)
    {
        $data = Data::where(['server_id' => $id])->orderByDesc('created_at')->limit($request->get('limit', 25))->get();
        $result = $data->sortBy('id')->values()->all();
        return response($result);
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы