2016-07-21 3 views
0

laravel 응용 프로그램을 상속 받았기 때문에 4에서 5로 마이그레이션해야합니다. filters.php 파일을 제외한 나머지 가이드는 모두 잘 수행됩니다.laravel 4에서 laravel 5까지 filters.php 파일을 마이그레이션 할 수 없습니다.

가이드는 부팅 방법을 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); 
    } 

} 
관련 문제