Могу ли я применить второй компонент запроса для фильтрации БЕЗ использования переключателей?

В настоящее время я создал фильтры, которые выбирают сообщения за сегодняшний день, за эту неделю или за этот месяц. Это просто и все, однако, когда я попытался добавить функциональность, которая позволяет мне добавить второй фильтр, все пошло не так.

Прежде всего, я не могу понять, как добавить второй компонент запроса к URL-адресу без использования переключателей. В настоящее время у меня есть это:

<ul class='home-filters'>
    <li><a class='placeholderA' href='?time=today'>Today</a></li>
    <li><a class='placeholderA' href='?time=week'>This Week</a></li>
    <li><a class='placeholderA' href='?time=month'>This Month</a></li>
    <li><a class='placeholderA' href='/'>Reset</a></li>
</ul>

Когда я нажимаю на любую из этих ссылок, она добавляет? Time = и желаемый временной интервал к URL-адресу, как этот http://example.com/?time=month. После этого мой контроллер страницы определяет, какие изображения показывать, используя этот код:

public function index(Request $request){

        if ($request->get('time') && $request->get('time') == 'today') {
            $images = Image::orderBy('created_at', 'DESC')
                            ->whereDate('created_at', Carbon::today())
                            ->get();
        } else if ($request->get('time') && $request->get('time') == 'week') {
            $images = Image::orderBy('created_at', 'DESC')
                            ->whereDate('created_at', '>', Carbon::now()->subWeek())
                            ->get();
        } else if ($request->get('time') && $request->get('time') == 'month') {
            $images = Image::orderBy('created_at', 'DESC')
                            ->whereDate('created_at', '>', Carbon::now()->subMonth())
                            ->get();
        } else {
            $images = Image::orderBy('created_at', $request->get('order') ?? 'desc')
                            ->get();
        }

        return view('home', ['images' => $images]);
    }

Это работает отлично и изящно, однако я хочу сделать так, чтобы можно было применить 2 фильтра, как этот http://example.com/?time=month&order=ascending.

Пытаюсь сделать аналогично тому, как это сделано на этом сайте - https://www.artstation.com/. Если я выберу «Цифровой 2D» в раскрывающемся меню «Все мультимедиа», а также нажму «Тенденции», URL-адрес стороны станет https://www.artstation.com/artwork?sorting=trending&medium=digital2d. Оба места, на которые я нажимаю, кажутся элементами <a>, такими же, как у меня.

Моя цель - иметь возможность добавлять компоненты запроса одним щелчком элемента <a>. Я буду беспокоиться о внутренней логике после того, как разберусь с этим.

Почему вы не хотите использовать переключатели? Вы также можете использовать список выбора / флажки или что угодно. Просто создайте форму, которая использует GET и сколько фильтров вы хотите. Когда вы отправите форму, вы получите все фильтры.

Magnus Eriksson 29.08.2018 01:17

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

Bobimaru 29.08.2018 01:28

Вам нужно несколько js, чтобы создать строку запроса из различных элементов страницы и отправить их во встроенном URL-адресе или запросе ajax. Разберите существующие параметры URL-адреса в объект js, а затем перестройте его при щелчке или изменении фильтра. Что-то вроде этого древнего ответа.

ourmandave 29.08.2018 04:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
32
0

Другие вопросы по теме