只有满足条件,我才能访问多条路线。否则我不应该访问这些路线。
我认为这应该通过过滤器完成,但我想我错过了一些关于它们如何工作的内容。
所以这是我的过滤器:
Route::filter('my.filter', function()
{
//some code regarding said condition
if($mycondition==true){
//WHAT TO PUT HERE?
}else{
//Error message
}
}
在我的路线中,我会:
Route::group(array('before' => 'my.filter'), function()
{
Route::resource('cities', 'CitiesController');
//... many more controllers here
});
但是我看到的所有示例都在if部分的过滤器内部进行了重定向。我不想要那个,我只想要,如果过滤条件是真的,你就会看到那个网址。
答案 0 :(得分:2)
如果您希望进一步停止过滤器执行您的路线(和控制器等),您必须:
在Laravel中你可以很容易地做到这一点:
Route::filter('my.filter', function()
{
//some code regarding said condition
if($mycondition==true){
// here you have to do nothing so you could also flip the if...
}else{
App::abort(403);
}
}
小旁注:正如上面评论中提到的,我会翻转if。像那样:
Route::filter('my.filter', function()
{
//some code regarding said condition
if($mycondition==false){
App::abort(403);
}
}
答案 1 :(得分:0)
你不必在那里放任何东西,只是让函数返回void。这将告诉laravel允许用户查看该页面。您可以随时在return
放置Route::filter('my.filter', function()
{
//some code regarding said condition
if($mycondition==true){
return;
}else{
//Error message
}
}
,让用户看到该页面并跳过以下所有条件。
如果不满足条件,最好将用户重定向到您解释用户无法看到该页面的原因的页面。
{{1}}