1

route() function doesn't generate url with slug

routes/web.php

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

Tasks model

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

Tasks Controller

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

Finally route() function in my view that works the way I didn't expect. It generates url like this - laravel.test/tasks/3. And I want it to use slugs.

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

1 Answers1

2

You have to specify that you use the slug as id in the route function :

{{route('task.show', $task->slug)}}
JCPHPDev
  • 169
  • 5