【发布时间】:2013-09-23 05:51:03
【问题描述】:
重写了我的路由和过滤器脚本并且它工作了,所以第一次可能犯了一个愚蠢的错误。发布了代码的缩小版本(删除了大部分路线)作为下面的答案。也接受了第一个答案,因此问题得到了回答。
从发现 laravel 的奇迹开始,但现在我被困住了。
我做了什么
-
首先我创建了几条路线。
这行得通。
-
然后我为一个溃败组创建了一个过滤器。
当我将路由组放在我的默认路由后面时,这有点工作。但是我可以解决这个问题,因为代码是从顶部执行的,并且当我将它放在我的默认路由之前的默认路由之前会被重写。听起来很合乎逻辑。
-
多个组的。
这是没有严重错误的地方。我首先创建了两个过滤器,因为我不知道是否可以制作负过滤器或以这种方式制作的东西。
一个过滤器与另一个过滤器完全相反。因此,如果过滤器一中的条件为真,则过滤器二中的条件为假。这样做是希望实现一个 rout 仅在该 rout 条件满足时执行,而另一个 rout 仅在不满足时执行。这导致了一个循环,我不明白。
我想要完成的事情
我希望一组页面可以访问,但第二组不能访问,反之亦然。 如果用户来自第一组,但请求第二组的页面,他会被重定向到第一组的“/”路由。
我的尝试导致了重定向疯狂的不定式循环
一个例子
假设 John Doe 向 url 发出 get 请求。他降落在'/'路线上。 John 未登录(或不满足任何条件)。所以 John 属于未登录的第一组人。John 被重定向到登录页面。
John 现在可以登录并登录。现在 John 属于第二组,该组由已登录的人组成。他现在一定无法看到登录页面。因此,当第 2 组的人向用于第 1 组的页面(例如 /login)发出请求时,他或她必须被重定向到用于第 2 组的页面(例如“/”)。
$a = true;
if($a){
Route::get('/', function(){return Redirect::to('login');});
Route::get('login', function(){View::make();});
}else{
Route::get('login', function(){return Redirect::to('/');});
Route::get('/', function(){View::make();});
}
问题:我如何使用 laravel 路由来做到这一点?
【问题讨论】:
-
你能发布你现有的路由配置吗? (正如你所说,导致无限重定向循环)
-
我可以,但它与执行其逻辑的控制器功能相关联。但是我会尝试下面的答案,如果这不起作用,我会输入它。
-
可能犯了一个愚蠢的错误,在大多数代码行中从头开始添加,现在它可以工作了。将在下面发布新代码。谢谢你的努力。 +1
标签: php routing laravel laravel-4