web.php
Route::get('/gigs/{id}', [GigsController::class, 'info'])->name('clientside.gigs_info'); Route::get('/gigs/create', [GigsController::class, 'create'])->name('clientside.gigs.create');Controlador
public function create() { $categories = Category::select('id', 'name')->get(); return view('clientview.gigs.create', compact('categories')); } public function info($id) { $gig = Gigs::join('users', 'users.id', '=', 'gigs.created_by') ->join('categories', 'categories.id', '=', 'gigs.category_id') ->select('gigs.*', 'categories.name as category_name', 'users.name as user_name', 'users.surname') ->where('gigs.id', '=', $id) ->orderBy('name', 'ASC') ->firstOrFail(); return view('clientview.gigs.info', compact('gig')); }Cuando trato de hacer clic en esto:
<a class="dropdown-item" href="{{ route('clientside.gigs.create') }}">Create Gigs</a>Cuando hago clic en esto, puedo observar en DebugBar que se dirige a la ruta ('clientside.gigs_info'). Creo que "/create" piensa que es un /{ID} pero, sin embargo, lo dirijo a una ruta diferente.
Respuesta de Michael Mano, asegúrese de escribir en web.php rutas estáticas antes que dinámicas.
Simplemente escriba crear ruta antes de la ruta de información porque es una ruta dinámica (que acepta el parámetro), así que siempre escriba la ruta dinámica después de la ruta estática.
De hecho, creó una ruta dinámica gigs/{id} para que cualquier cosa que venga después de gigs se llame como un parámetro de gigs. Entonces, para solucionar esto, cambie el orden en su web.php como se muestra a continuación. Por lo tanto, primero buscará la ruta estática y luego la ruta dinámica.
Route::get('/gigs/create', [GigsController::class, 'create'])->name('clientside.gigs.create'); Route::get('/gigs/{id}', [GigsController::class, 'info'])->name('clientside.gigs_info');