Нет реальной разницы, так как это просто имя параметра, но вам понадобится какой-то способ для разностных параметров, если у вас более одного в маршруте, то есть вложенный контроллер ресурса:
Route::get('articles/{article}/comments/{comment}', 'ArticleCommentController@show');
Очевидно, Вы не можете использовать только {id}
для параметров статьи и комментариев. По этой причине лучше использовать версию параметра «slug» для имени параметра, даже если в вашем маршруте есть только одна:
Route::get('articles/{article}', 'ArticleController@show');
Вы также можете использовать route модель переплета . Если вы добавите подсказку типа в действие контроллера для имени параметра, Laravel попытается найти экземпляр данного класса с первичным ключом в URL.
Учитывая маршрут во втором Например, если у вас есть контроллер, который выглядит следующим образом ...
class ArticleController extends Controller
{
public function show(Article $article)
{
//
}
}
... и вы запросили / article / 123 , тогда Laravel попытается найти Article
экземпляр с первичным ключом 123.
Привязка модели маршрута хороша, поскольку она удаляет много вызовов методов find
/ findOrFail
в вашем контроллере. В большинстве случаев вы можете уменьшить действия контроллера до однострочных:
class ArticleController extends Controller
{
public function show(Article $article)
{
return view('article.show', compact('article'));
}
}