2016-07-21 85 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); 
    } 

}