Laravel Сортировка внешнего вида магазина - PullRequest
0 голосов
/ 08 мая 2020

Привет, я делаю магазин для университетского проекта. Это мой первый курс по веб-разработке, и я не понимаю, как отсортировать страницу со списком магазинов с помощью раскрывающегося списка html в laravel.

Frontend Blade

<div class="toolbar-sorter">
  <span>Sort By</span>
  <select name="sorter" class="sorter-options"  style="width:150px; "data-role="sorter">
    <option selected="selected" value='comic_name'>Titolo: A-Z </option>
    <option value='comic_name'> Titolo: Z-A </option>
    <option value='price'> Prezzo: Crescente </option>
    <option value='price'> Prezzo: Decrescente </option>
    <option value='created_at'> Ultimi Arrivati </option>
  </select>
</div>

Маршрут. php (Это не единственный маршрут продавца)

Route::get('/shoplist', 'ComicController@shoplistBase');

ComicController

public function shoplistBase()
{
    $genres = Genre::all();
    $comics = Comic::paginate(9);
    return view('shoplist')->with(compact('genres'))->with(compact('comics'));
}

1 Ответ

0 голосов
/ 08 мая 2020

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

Оберните раскрывающийся список в форму

Убедитесь, что вы используете уникальные значения для каждой опции

<form action="/shoplist" method="GET">
    <div class="toolbar-sorter">
        <span>Sort By</span>
        <select name="sorter" class="sorter-options" style="width:150px; " data-role="sorter">
            <option selected="selected" value='comic_name_asc'>Titolo: A-Z</option>
            <option value='comic_name_desc'> Titolo: Z-A</option>
            <option value='price_asc'> Prezzo: Crescente</option>
            <option value='price_desc'> Prezzo: Decrescente</option>
            <option value='created_at'> Ultimi Arrivati</option>
        </select>
    </div>
    <button type="submit">Filter</button>
</form>

Обработка запроса фильтра в вашем контроллере

    public function shoplistBase(Request $request)
    {
        $genres = Genre::all();
        if ($request->has('sorter')){
            switch($request->get('sorter')){
                case `comic_name_asc`:
                    $comics = Comic::orderBy('name', 'desc')->paginate(9);
                    break;
                case `comic_name_desc`:
                        //..
                    break;
            }
        } else {
            $comics = Comic::paginate(9);
        }

        return view('shoplist')->with(compact('genres'))->with(compact('comics'));
    }
...