【问题标题】:Return To Previous Page - Laravel 8 Project返回上一页 - Laravel 8 项目
【发布时间】:2022-01-09 07:57:41
【问题描述】:

我有一个使用分页器查看类别的仪表板,因此我的 url 通常看起来像:http://127.0.0.1:8000/categories?page=1 在我的category.view 页面上。

当我点击Edit 时,它会将我带到类别编辑页面。

在这个页面上我有一个go back to categories 按钮。

如果编辑类别页面没有刷新/重新加载,View Categories 按钮可以正常工作。

这是我的View Categories 按钮的代码

<a href="{{ url()->previous() }}" class="btn btn-primary"><i class="material-icons">arrow_back</i> View Categories</a>

我遇到的问题是,如果我要刷新Edit Category 页面或保存一些编辑,则此View Categories 按钮将停止按预期工作,因为当我单击它时,它只会刷新并停留在同一个Edit Category 页面上。

我知道这是因为在我的浏览器历史记录中,一旦重新加载了 Edit Category 页面,它就会成为历史记录中的最后一页,因此将理所当然地成为要加载的页面。

即使在重新加载/刷新当前Edit Category 页面后,如何让我的View Categories 按钮将我带回到最后一个分页页面?

我用过:<a href="{{ url()->previous() }}" class="btn btn-primary"><i class="material-icons">arrow_back</i> View Categories</a>

<a href="{{ URL::previous() }}" class="btn btn-primary"><i class="material-icons">arrow_back</i> View Categories</a>

<a href="history.back()" class="btn btn-primary"><i class="material-icons">arrow_back</i> View Categories</a>,它们都没有按预期工作。

我可以使View Categories 按钮返回到类别页面,但问题是我必须确保它位于上次访问的http://127.0.0.1:8000/categories?page=NUMBER

请注意:这不是控制器、组件、路由或 web.php 问题。所有这些工作正常。我只希望我的Go Back 按钮能够正常工作。

【问题讨论】:

    标签: laravel url laravel-8 laravel-routing


    【解决方案1】:

    我有一些类似的问题并通过使用这个解决了它:

    return redirect()->back();

    但是,由于您没有发布任何代码,因此很难告诉您任何具体内容。

    【讨论】:

    • 我已经添加了有问题的代码......我的问题仍然存在。我已经查看了Documentation,但我似乎仍然找不到有效的解决方案。
    【解决方案2】:

    不确定您的具体情况,但您可以尝试以下代码,因为您已经知道要使用正确参数的确切网页:

    Route::get('/view-category/{id}',[CategoryController::class,'view'])->name('view-category')
    {{ route('view-category',[id]) }}
    

    【讨论】:

    • 这正是问题所在...我不知道要转到的确切页面,因为我使用的是分页器。我也不想为此使用路由或创建控制器。像{{{route(url()->previous())}}} 这样简单的东西是我想要实现的。不过感谢您的努力。
    • 对,所以我刚刚看到了您发布的网站图片。我的意思是您知道“确切的网页”,这意味着您可以找到一种方法来记住他们将要编辑的类别或他们来自哪里。您可以使用 DB 或 session/localstorage,然后通过在您的 a href 内的 url 中添加参数来检索它。然后当然需要在返回页面时清除这些参数。
    • 看看这个网站,希望对你有帮助。 link
    • 我建议还请添加更多测试数据以用于分页目的。至少你可以看到那些分页按钮并获得它的页面值。 (至少 2 页。)
    • 是的,我正在寻找与您共享的链接上的内容相似的内容。我看到有很多方法可以做到这一点,但是从像 Laravel 这样的优秀框架中,人们会期望一个非常简单的内置选项来实现这一点。非常感谢。
    【解决方案3】:

    这非常有用Laravel Session

      public function index(Request $request){
            $categories = Category::latest()->paginate(5);
            //the following snippet creates persistent session variables
            $request->session()->put('page',$categories->currentPage());
            return view('orders.view',compact('orders'));
      }
    

    还从这里更改了View Categories 按钮:

    <a href="{{ url()->previous() }}" class="btn btn-primary"><i class="material-icons">arrow_back</i> View Categories</a>

    到这里:

    <a href="{{ Session::has('page') ? '/categories?page=' . Session::get('page') : '/categories' }}" class="btn btn-primary"><i class="material-icons">arrow_back</i> View Categories</a>

    此按钮首先测试是否设置了$_SESSION['page'],如果设置了,则在单击时将最后一个已知值分配给?page=,作为额外的预防措施,如果由于某种原因未找到会话值,则该按钮将重定向回category.view 是分类登陆页面。

    这正是我想要实现的目标,我惊讶地发现不存在任何原生或内置方法,因为我检查了大多数公共论坛并重新检查了 Laravel Doc 并没有发现我所拥有的寻找。 也许这个问题还不够清楚,但我确信我已经提供了足够的材料来清楚地说明我想要实现的目标。

    【讨论】:

      猜你喜欢
      • 2021-08-12
      • 1970-01-01
      • 2022-08-03
      • 2021-09-14
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      • 2011-02-02
      相关资源
      最近更新 更多