Salut,
Il faut que ta route soit déclarée dans le fichier routes/web.php (exemple: Route::get('links/{id}, [LinkController::class, 'show']);).
Le mieux est d'utiliser des routes nommées (petit tips, tu peux utiliser l'auto binding, ça eviter de faire Link::findOrFail($id)).
Voilà la solution que je te propose
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\LinkController;
Route::get('links/{link}', [LinkController::class, 'show'])->name('link.show');
app/Http/Controllers/LinkController.php
<?php
namespace App\Http\Controllers;
use App\Models\Link;
use Illuminate\Http\RedirectResponse;
class LinkController extends Controller {
/**
* Auto binding de Link, il va récupérer le model si il existe, sinon 404
* Equivalent au `findOrFail`
*/
public function show(Link $link)
{
return redirect($link->url);
}
}
Ta vue
@section('content')
<h1>bravo</h1>
<p>
<a class="btn btn-primary" href="{{ route('link.show', ['link' => $link']) }}">
Lien : {{ route('link.show', ['link' => $link']) }}
</a>
</p>
@endsection