【问题标题】:Laravel Sort shoplist front endLaravel 排序购物清单前端
【发布时间】:2020-08-24 07:26:21
【问题描述】:

您好,我正在为一个大学项目开店。这是我在网络开发方面的第一门课程,我不明白如何通过 laravel 中的 html 下拉选择对购物清单页面进行排序。

前端刀片

<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>

Route.php(这不是shoplist的唯一路径)

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

漫画控制器

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

【问题讨论】:

  • 将更改事件添加到您的选择中。根据其值,调用您过滤数据并更新视图的端点。
  • 包含select name="sorter" 的表单的路由和控制器是什么?
  • @IGP 你能向我解释这个答案吗?我几乎没有重定向到购物清单的路线,每个路线都发送不同的漫画集合,例如价格在两个值之间或以类别为基础的漫画。
  • @ChristopheHubert 可能我在行之前添加了 `select name = "sorter" `

标签: php laravel sorting laravel-blade


【解决方案1】:

假设您使用相同的路线进行排序:

将您的下拉菜单包装在一个表单中

确保为每个选项使用唯一值

<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'));
    }

【讨论】:

  • 您好,我使用不同的路由,使用相同的排序表单,在这种情况下,表单操作是否有任何更改?
  • 这真的取决于您的应用程序的逻辑 - 这是我可以提供的数据最好的。请尝试一下,看看它是否解决了您的问题
  • 谢谢,但问题仍然存在,因为它说找不到对象!在此服务器上找不到请求的 URL
猜你喜欢
  • 1970-01-01
  • 2018-08-29
  • 2020-08-06
  • 2018-04-07
  • 1970-01-01
  • 2020-03-08
  • 2018-08-03
  • 1970-01-01
  • 2023-04-05
相关资源
最近更新 更多