Php 在laravel中使用嵌套页面的正确方法是什么?

Php 在laravel中使用嵌套页面的正确方法是什么?,php,laravel,routes,Php,Laravel,Routes,如何正确返回,而不传递命名参数,并且不使用url->previous 例如,使用url()->previous(): 如果刷新页面,则任何url()->previous()在该页面上都不起作用 如果你从route/1->apples/1->banana/2->返回,使用url()->previous()apples/1并将url()->previous()放在apples/1上,你将回到banananar/2而不是回到route/1 人们知道这一点。唯一可能的解决方案是使用命名路由,在这种情况下

如何正确返回,而不传递命名参数,并且不使用url->previous

例如,使用
url()->previous()

  • 如果刷新页面,则任何
    url()->previous()
    在该页面上都不起作用
  • 如果你从
    route/1
    ->
    apples/1
    ->
    banana/2
    ->返回,使用
    url()->previous()
    apples/1
    并将
    url()->previous()
    放在
    apples/1
    上,你将回到
    banananar/2
    而不是回到
    route/1
  • 人们知道这一点。唯一可能的解决方案是使用命名路由,在这种情况下,我必须将
    苹果
    路由id传递到
    香蕉
    才能返回到
    苹果/1
    ,我还必须在
    路由/1
    上使用命名路由,并将其路由参数从
    苹果/1
    传递到命名路由才能返回

    这不是一个问题,除非您有深入的页面,并且没有相互关联的模型:

    • /路线/1-独立控制器和模型
      • 导致:
        /apples/1
        -独立控制器和型号
        • 通向:
          /someOtherRoute/2
          -独立控制器和型号
          • 导致:。。。等等…-独立控制器和模型
    如果您使用
    url()->previous()
    ,因为我认为它是基于会话的,并且我使用数据库进行会话,它不记得您要去哪里,它在前面的url上正常工作,正如链所建议的那样

    因此,当您有这样的嵌套页面,其中没有任何相关内容时,您如何处理:一次返回一个页面?(即单击“上一步”按钮将链遍历回
    路线/1
    您是否合法地将所有参数传递给每个控制器操作

    您正在使用请求吗?因此,您的所有URL现在看起来像:
    /apples/1/?route=1
    ?:

        route('apples.apple', [
            'apple' => $apple->id
            'route' => $route->id // => ?route=1
        ]);
    
    回到彼此不相关的路线上,拉雷维尔的方法是什么

    如果它是
    route/1/apples/1/SomeOtherRoute/2
    ,那是一回事,因为对我来说,它显示了一种直接的关系,然而在上面的示例中,这些都是独立的路由,它们有自己的控制器和动作,它们的模型彼此不相关


    它们相互关联的唯一方式是从
    route/1
    开始,点击进入
    apples/1
    ,然后点击进入。。。等等等等。每个页面都有自己的后退按钮。

    url()->previous()
    使用
    referer
    中存储的标题信息。PHP代码是
    $\u SERVER['HTTP\u REFERER']
    ,这意味着将您带到当前页面的页面将是您返回的页面。因此,如果刷新当前页面,它将返回到当前页面,因为当前标题信息reffer是当前url。如果您阅读了window.history.back()上的文档,可以尝试使用js
    onclick=“window.history.back()”
    @sta,这与单击“后退”按钮相同,因此无法解决问题。它只需要将它转移到JS,然后你就可以用session@sta想用一个例子来回答这个问题吗?所以我可以把它标记为已接受?