首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于上一页的Laravel重定向到不同的页面

基于上一页的Laravel重定向到不同的页面
EN

Stack Overflow用户
提问于 2015-11-24 14:34:48
回答 3查看 4.1K关注 0票数 8

假设您在控制器中有一种方法,比如存储一家新公司。也可以想象一下,我们可以在我们网站的不同页面上创建新公司。例如,我可以创建一个2-3页的公司。

根据我在哪里创建的公司,我需要有不同的重定向。有时我需要重定向回去,有时我要转到其他路线。

类似于:

代码语言:javascript
复制
if ($previousRoute === 'companies.index') { 
    return redirect()->back();
} else {
    return redirect()->route('someroute');
}

我想我不知道用户从哪里来的路线名称。如果我检查referrer,那么如果我更改了路由url,那么所有的内容都会被破坏,所以我想要依赖于路由名称。另外,有许多"if-s“或”开关“的解决方案有点奇怪,它会污染代码。

此外,还需要通配符支持。某种重定向的路线图或者类似的东西。

有什么建议如何实施吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-24 14:52:46

嗯,你可以把以前的网址和任何路线的网址进行比较。这不是最好的解决方案,我不知道如何处理路由参数,但它可以工作。

代码语言:javascript
复制
if (URL::previous() === URL::route('companies.index')) { 
   return redirect()->back();
} else {
   return redirect()->route('someroute');
}
票数 2
EN

Stack Overflow用户

发布于 2015-11-24 14:52:19

一组if语句(或switch)在某个地方是必要的,因为您必须做出决定。

我不会依赖参考URL,因为它将打破如果你改变你的路线。和你一样,我更喜欢所有的路线名称,因为我的URL可以改变。

会话密钥怎么样?设置一些值,然后检索它&在公司创建后选择您的重定向。就像这样:

在创建公司页面#1的控制器方法中

代码语言:javascript
复制
Session::put('create-company-method', 1);

然后,在公司成立之后

代码语言:javascript
复制
$flag = Session::get('create-company-method');
if ($flag===1) {
    return redirect()->route('go-here-next');
} else if ($flag===2) {
    ...
}

它不漂亮,但它会起作用的。此外,它还有一个很大的优势:您可以任意设置会话值,因此,如果需要添加用于决策的其他信息,请继续。你需要通配符吗?设置会话键,但是要传递该信息。

票数 0
EN

Stack Overflow用户

发布于 2015-11-24 18:17:48

在保存Company之后,如果路由后面有任何“逻辑”,我就无法理解。在我的一个应用程序中,我需要能够编辑一个地址并将其重定向到以前的URL或返回到索引页面。

如果在您的应用程序中是这样的,那么对此有一个相当简单和干净的解决方案。

我们正在执行拉力维尔redirect()->intented()功能。

在您的GET函数(例如getCreate)中,如果目标URL与URL本身不相同,则将其设置为前面的URL:

代码语言:javascript
复制
($request->fullUrl() != URL::previous()) ? session()->set('url.intended', URL::previous()) : null;
// url.intended is the same key that is used be Laravels intented function

现在,在您的POST方法(例如,postCreate)中,您只需返回一个重定向到预期的URL,如下所示:

代码语言:javascript
复制
return redirect()->intended('AddressController@getIndex');
// The string within intended() defines where you want to be redirected if there is no session key is found
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33896355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档