{id}与{tag}之间的Laravel路由差异
我是拉雷维尔的新手,请原谅我的问题很愚蠢。我在他们用过的地方看过医生 获取请求{id}与{tag}之间的Laravel路由差异,laravel,Laravel,我是拉雷维尔的新手,请原谅我的问题很愚蠢。我在他们用过的地方看过医生 获取请求 Route::get("tags/{id}","TagsController@show"); Route::put("tags/{tag}","TagsController@update"); 请求出售 Route::get("tags/{id}","TagsController@show"); Route::put("tags/{tag}","TagsController@update"); 这两者的区别和
Route::get("tags/{id}","TagsController@show");
Route::put("tags/{tag}","TagsController@update");
请求出售
Route::get("tags/{id}","TagsController@show");
Route::put("tags/{tag}","TagsController@update");
这两者的区别和好处是什么?我明白了第一条路,在铺设路线上的混乱。正常道路
Route::get(“tags/{id},”TagsController@show");
函数($id)
{
$tag=tag::find($id);
dd($tag);//tag
}
带有路由模型绑定
Route::put(“tags/{tag},”TagsController@update");
函数(Tag$Tag)//标记模型绑定
{
dd($tag);//标记
}
参考链接正常方式
Route::get(“tags/{id},”TagsController@show");
函数($id)
{
$tag=tag::find($id);
dd($tag);//tag
}
带有路由模型绑定
Route::put(“tags/{tag},”TagsController@update");
函数(Tag$Tag)//标记模型绑定
{
dd($tag);//标记
}
参考链接检查以下内容:
使用id,Laravel将从route获取id,它将是标签的id,它是整数
function show($id) {
$tag = Tag::find($id);
}
使用标记,Laravel会自动解析路由或控制器操作中定义的雄辩模型,其类型提示变量名称与路由段名称匹配。
在URL中,标记参数是整数,但在控制器操作中,$tag
将是一个模型对象:
功能动作(标签$Tag){
$tag->name;
}
因此,您不需要在控制器操作中雄辩地获得$tag
。您只需指定它来自modelTag$Tag
它将自动执行此操作。请查看以下内容:
使用id,Laravel将从route获取id,它将是标签的id,它是整数
function show($id) {
$tag = Tag::find($id);
}
使用标记,Laravel会自动解析路由或控制器操作中定义的雄辩模型,其类型提示变量名称与路由段名称匹配。
在URL中,标记参数是整数,但在控制器操作中,$tag
将是一个模型对象:
功能动作(标签$Tag){
$tag->name;
}
因此,您不需要在控制器操作中雄辩地获得$tag
。您只需指定它来自modelTag$Tag
它会自动完成。这只是一个惯例。你想怎么说都行。通常,{id}指的是表中的id。标记或类似的slug是字符串值。标签可以是视频类别的“娱乐”,而“我的西班牙之旅”则是描述视频的一个鼻涕虫 你必须选择你喜欢的词。该值将用于在数据库中查找在视图中显示正确请求所需的记录。同样,您可以使用
video/view/{id}/{slug}
或其任意组合
只要确保你的URL不会太长。因为搜索引擎不会在搜索结果中很好地显示你的网站。在明确的(数据库)和逻辑(访问者)之间找到平衡 这只是一个惯例。你想怎么说都行。通常,{id}指的是表中的id。标记或类似的slug是字符串值。标签可以是视频类别的“娱乐”,而“我的西班牙之旅”则是描述视频的一个鼻涕虫 你必须选择你喜欢的词。该值将用于在数据库中查找在视图中显示正确请求所需的记录。同样,您可以使用
video/view/{id}/{slug}
或其任意组合
只要确保你的URL不会太长。因为搜索引擎不会在搜索结果中很好地显示你的网站。在明确的(数据库)和逻辑(访问者)之间找到平衡 没有真正的区别,因为它只是一个参数名,但如果路由中有多个参数,即嵌套的资源控制器,则需要某种方法来区分参数:
Route::get('articles/{article}/comments/{comment}','ArticleCommentController@show');
显然,您不能对article和comment参数都使用{id}
。因此,最好使用模型的“slug”版本作为参数名称,即使路线中只有一个参数名称:
Route::get('articles/{article}','ArticleController@show');
您也可以使用。如果为参数名称向控制器操作添加类型提示,Laravel将尝试在URL中查找具有主键的给定类的实例
给定第二个代码示例中的路线,如果您有一个控制器,看起来像这样
类ArticleController扩展控制器
{
公共功能展示(文章$文章)
{
//
}
}
…您请求了/articles/123,然后Laravel将尝试查找主键为123的Article
实例
路由模型绑定非常好,因为它删除了控制器中大量的find
/findOrFail
方法调用。在大多数情况下,您可以将控制器操作简化为一行程序:
类ArticleController扩展控制器
{
公共功能展示(文章$文章)
{
返回视图('article.show',compact('article');
}
}
没有真正的区别,因为它只是一个参数名,但如果路由中有多个参数,即嵌套的资源控制器,则需要某种方法来区分参数:
Route::get('articles/{article}/comments/{comment}','ArticleCommentController@show');
显然,您不能对article和comment参数都使用{id}
。因此,最好使用模型的“slug”版本作为参数名称,即使路线中只有一个参数名称:
Route::get('art