2016-07-21 86 views
0

我刚刚继承了laravel应用程序,需要将其从4迁移到5.在遵循除了filters.php文件之外的指南之后,一切都很好。无法将filters.php文件从laravel 4迁移到laravel 5

该指南说,将它们移动到启动方法RouteServiceProvider并在过滤器之前替换为middleware但它不起作用。我对laravel很陌生,不确定一切是如何运作的。

这是过滤器我试图迁移的一个:

Route::filter('campaign.edit', function($route) 
{ 
$campaign_id = $route->getParameter('id'); 
if (is_null(Namespace\Campaign::find($campaign_id))) { 
    if (Input::get('campaign_id')) { 
     $campaign_id = Input::get('campaign_id'); 
    } else if (Input::get('track_id')) { 
     $track_id = Input::get('track_id'); 
     $track = Namespace\Track::find($track_id); 
     $campaign_id = $track->campaign_id; 
    } else { 
     return; 
    } 
} 
if (false === Auth::user()->canEditCampaign($campaign_id)) { 
    return App::abort(403); 
} 
}); 

我怎么能去有关迁移这一块?

回答

0

找到了解决方案,通过采取该功能,并制作一个中间件,如下面的一个。

namespace App\Http\Middleware; 

use Closure; 
use NameSpace; 
use Input; 
use Illuminate\Support\Facades\Auth; 

class CampaignEdit 
{ 
public function handle($request, Closure $next) 
{ 
    $campaign_id = $request->route('id'); 
    if (is_null(NameSpace\Campaign::find($campaign_id))) { 
    if (Input::get('campaign_id')) { 
     $campaign_id = Input::get('campaign_id'); 
    } else if (Input::get('track_id')) { 
     $track_id = Input::get('track_id'); 
     $track = NameSpace\Track::find($track_id); 
     $campaign_id = $track->campaign_id; 
    } else { 
     return; 
    } 
    } 
    if (false === Auth::user()->canEditCampaign($campaign_id)) { 
    return App::abort(403); 
    } 


    return $next($request); 
    } 

}