Laravel 路线模型

Laravel route model

你好,我从我正在学习的书中得到了这段代码 laravel 和 mvc

Route::model('cat', 'Cat');


Route::get('cats/test', function()
{   
    return "test_working";
});

Route::get('cats/{cat}', function(Cat $cat) {
return View::make('cats.single')
->with('cat', $cat);
});

Route::get('cats/create', function() {
    $cat = new Cat;
    return View::make('cats.edit')
    ->with('cat', $cat)
    ->with('method', 'post');
});

如果第二条路线在第三条路线上,则抛出 NotFoundHttpException 我知道它与 cats/{cat} 和模型有关,有人可以解释为什么会这样吗 当然我可以移动代码,但我想知道为什么。谢谢。

Route::get('cats/{cat}' 将 "catch" /cats/create 因为一条路线中的 {cat} 部分匹配任何内容。不仅是 id,还有 create。您可以将顺序更改为此以在限制较少的路线 (cats/{cat}) 之前具有更受限制的路线 (cats/create),或者您可以使用正则表达式仅允许 {cat} 的数字:

Route::get('cats/{cat}', function(Cat $cat) {
    return View::make('cats.single')
    ->with('cat', $cat);
})->where('cat', '[0-9]+');