路由过滤器检查失败时什么也不做

时间:2014-03-24 15:31:41

标签: laravel laravel-4

我有一个路由过滤器,如果过滤器未通过检查,我基本上什么都不做。

我基本上是在限制区域,但如果失败则我不想重定向,我宁愿用户留在原地。

Route::group(array("prefix"=>"protected", "before"=>"level:3"),function(){ ... }

Route::filter('level', function($route, $request, $value)
{
    if(Auth::user()->level < $value) // do nothing
}

不幸的是,什么都不做会导致访问页面。 Doing Route::back()似乎有效,除了没有页面刷新,其中一个不是必需的,可能会使用户感到困惑。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你必须明白,如果你正在做普通表格POST(或甚至是GET)来发送数据,你已经做了一件大事:你发送了一个请求而你却无法收回。用户所在的页面已经消失,他现在正在新页面中。您必须至少再次渲染视图:

return View::make('my.very.same.view');

它可能会闪烁/闪烁,看起来页面上会发生某些事情。

因此,如果您需要,如果出现异常或错误,请保留在同一页面中,您必须使用Ajax发送数据,如果您的数据完好无损,请执行您需要执行的任何操作。< / p>