2016-03-21 30 views
0

Laravel 5.2には、ルートが存在するかどうかを確認する特別な方法(ハンドラ)がありますか?さんが言ってみましょう、などの基本的なURLのために:ある私のメインページのルータから:ルート「URL」が存在するかどうかを確認するにはどうすればよいですか?

私はどのように
Route::get('/{page}', funtion(){ 
    //check if $page is a valid route URL? Or 404? 
}); 

http://www.example.com/laravel 

私は、非既存のURL(/laravel等)を扱いたいです意図的にこのルートが有効なルートかどうかを確認しますか?

+0

hopw about Route :: has( 'route.name'); –

+0

上記の例のルートに従って 'Route :: has( 'route.laravel')を意味しますか? –

+1

あなたは、1)ルートエイリアスが使用されているかどうかを確認します。または2)指定されたURLがあなたのルートの1つに一致するかどうかを確認しますか? –

答えて

3

Route::get('/{page}','[email protected]');を最後に入力してください。そうすれば、それが使用される前に別のルートが見つかった場合でも、そうでなければ、これによって捕らえられます。たとえば、次のように

Route::get('/welcome','[email protected]'); 
Route::get('/test','[email protected]'); 
Route::get('/{page}','[email protected]'); 

あなたが/welcome/testをヒットした場合、それが正しいコントローラへのルートそれらをする必要があります。 /helloを打つ場所がある場合は、MainControllerに行き、getPage($page)とヒットしたページが$pageである必要があります。

それは[email protected]に当たる場合は、それは基本的にあなたが知る必要がある場合は、何らかの理由でルートを打つ前に、あなたはこのような何か作成することができます404

だった知っている:私が使用

Route::get('/checkurl/{page}',function($page) { 
    $exists = Route::has('/' . $page); 
    return (new Response(json_encode(['exists'=>$exists]),200); 
}); 
3

Route::any('{catchall}', function($page) { 
    abort(404); 
})->where('catchall', '(.*)'); 

あなたがまだ気づいていない場合は、abort(404)がからの眺め404.blade.phpを返します。私の最後のルートとして、次の。

+0

これまでのところとても良いです。これは最適なオプションのように見えます – mojoblanco

0

すべてのキャッチで最後のルートを追加すると、laravel 5.5.1+