【问题标题】:Laravel Change URL name detailLaravel 更改 URL 名称详细信息
【发布时间】:2021-01-20 14:01:39
【问题描述】:

如何使帖子单个 URL 像 myweb.com/post-name 而不是 myweb.com/post-id ?它适用于帖子 ID,但不适用于帖子名称。

这是我目前的路线。

Route::get('/{id}', [App\http\Controllers\PostController::class, 'show']);

这里是我的控制器。

public function show($id)
{
    $post = post::find($id);
    return view('detail', ['post' => $post]);
}

谢谢。

【问题讨论】:

  • 在路由和控制器中将 id 更改为名称,以便您按名称查询记录。 Route::get('/{name}', [App\http\Controllers\PostController::class, 'show']); public function show($name) { $post = post::where('name', $name)->first(); return view('detail', ['post' => $post]); }

标签: php laravel eloquent laravel-8


【解决方案1】:

那是因为您使用$id 作为标识符来解析帖子对象:

myweb.com/25

然后:

public function show($id) // $id = 25
{
    $post = post::find($id); // find() search for the PK column, "id" by default

    return view('detail', ['post' => $post]);
}

如果您想通过其他字段解析$post,请执行以下操作:

public function show($name)
{
    $post = post::where('name', $name)->first();

    return view('detail', ['post' => $post]);
}

这应该适用于这样的路线:

myweb.com/a-cool-post-name

附带说明一下,您可以使用 Route Model Binding 自动解析模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多