Php 在laravel中使用嵌套页面的正确方法是什么?
如何正确返回,而不传递命名参数,并且不使用url->previous 例如,使用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()
在该页面上都不起作用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()上的文档,可以尝试使用jsonclick=“window.history.back()”
@sta,这与单击“后退”按钮相同,因此无法解决问题。它只需要将它转移到JS,然后你就可以用session@sta想用一个例子来回答这个问题吗?所以我可以把它标记为已接受?