2017-07-19 3 views
2

の順序を変更するとき、私は二つの経路を作成し、私は順番にそれらを使用する場合Laravelは「申し訳ありませんが、あなたが探しているページが見つかりませんでした」と報告しています。私はルート

Route::get('posts/{post}', '[email protected]'); 
Route::get('posts/create', '[email protected]'); 

Laravel「申し訳ありませんが、あなたが探しているページが見つかりませんでした。」報告しますしかし、私が注文を変更する場合

Route::get('posts/create', '[email protected]'); 
Route::get('posts/{post}', '[email protected]'); 

それは期待どおりに動作します。なぜ最初の注文がうまくいかないのですか?

+0

ご注文の際に問題がない場合は、もう一度お試しくださいarキャッシュしてもう一度試してください –

答えて

4

はここposts/{post}/posts/create含め/posts/*にすべての要求を処理します:

Route::get('posts/{post}', '[email protected]'); 
Route::get('posts/create', '[email protected]'); 

だから、あなたはposts/{post}ルートの前にcreateと同様のルートを定義する必要があります。

0

私はあなたがこのURLをヒットした場合のルートがそう順序

に一致していると考えている:最初のルートがヒットしますので、doesnのポストを表示しようとするポスト/作成

Route::get("post/{post}", [email protected]); 

Route::get("post/create", [email protected]); 

(つまりIDが「作成」の投稿)

これを修正しても問題はありません。しかし、あなたはより多くのRESTfulなルートを使用した場合、それはこの問題を回避するのに役立ちます:

Route::get("post/{post}", [email protected]); 

Route::post("post", [email protected]); 

Route::patch("post/{post}", [email protected]); 

等...

この方法では、動詞は複数のルートがあるので

1

を振る舞うべき方法を示し、ルーティングメカニズムは、そのうちの1つが要求と一致するまでルートを試行してから停止します。

あなたは要求「Kill Mark」を持っていて、このリストを持っている場合:

Kill all of the mankind 
Kill Mark 

いますが、この他のリストを持っている場合

Kill Mark 
Kill all of the mankind 
を(人類のすべてが死ぬ、マークが含まれています)

(マークダイスのみ)

+0

私はあなたが説明したように(y):D –

関連する問題