2015-01-14 2 views
1

Привет у меня есть этот код из книги им обучения Laravel и MvcLaravel маршрут модели

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'); 
}); 

, если второй маршрут на 3th сбрасывает NotFoundHttpException я знаю свое родственное с кошками/{кошка} и модель может кто-то объясните, почему это происходит , конечно, я могу просто переместить код, но я хочу знать почему. Спасибо.

+0

Что такое URL, который бросает исключение? – marcanuy

+0

Route :: get ('cats/create', function() ... – user3423298

ответ

0

Route::get('cats/{cat}' «поймает» /cats/create, потому что часть {cat} в одном маршруте соответствует чему угодно. Нет только идентификаторов, но также и create. Вы можете изменить порядок на это, чтобы иметь более ограниченный маршрут (cats/create) до менее ограниченного одной (cats/{cat}), или вы можете использовать регулярные выражения, чтобы только номера для {cat}:

Route::get('cats/{cat}', function(Cat $cat) { 
    return View::make('cats.single') 
    ->with('cat', $cat); 
})->where('cat', '[0-9]+'); 
Смежные вопросы