首页 > 解决方案 > Laravel 路线不适用于 slug

问题描述

route() 函数不会生成带有 slug 的 url

路线/web.php

Route::get('/tasks/{task}', 'TasksController@show')->name('task.show');

任务模型

public function getRouteKeyName()
{
    return 'slug';
}

任务控制器

public function show(Tasks $task){
    $task_full = Tasks::with('tags')->find($task->id);
    return view('tasks.show', ['task'=>$task_full]);
}

最后,我认为 route() 函数以我没想到的方式工作。它会生成这样的 url - laravel.test/tasks/3。我希望它使用蛞蝓。

<a href="{{route('task.show', ['task'=>$task])}}"><li>{{$task->body}}</li></a>

标签: laravellaravel-5

解决方案


您必须指定在路由函数中使用 slug 作为 id:

{{route('task.show', $task->slug)}}

推荐阅读