简体   繁体   English

Laravel 重定向到错误的路线

[英]Laravel redirecting to the wrong route

web.php网页.php

 Route::get('/gigs/{id}', [GigsController::class, 'info'])->name('clientside.gigs_info');

Route::get('/gigs/create', [GigsController::class, 'create'])->name('clientside.gigs.create');

Controller控制器

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'));
}

When I try to click this:当我尝试点击这个时:

<a class="dropdown-item" href="{{ route('clientside.gigs.create') }}">Create Gigs</a>

When I click this I can observe from DebugBar that it directs to route ('clientside.gigs_info') I think "/create" thinks it is an /{ID} but however, I direct to a different route当我点击它时,我可以从 DebugBar 观察到它指向路由 ('clientside.gigs_info') 我认为“/create”认为它是一个 /{ID} 但是,我指向不同的路由

Michael Mano 的回答,确保你在动态之前写在 web.php 静态路由上。

只需在信息路由之前写创建路由,因为它是动态路由(接受参数)所以总是在静态路由之后写动态路由。

You actually created a dynamic route gigs/{id} so anything that comes after gigs will be called as a parameter of gigs.您实际上创建了一个动态路由 gigs/{id},因此 gigs 之后的任何内容都将作为 gigs 的参数被调用。 So to fix this change the order in your web.php like below.因此,要解决此问题,请更改 web.php 中的顺序,如下所示。 So it will search for static route first and then go for dynamic route.所以它会先搜索静态路由,然后再搜索动态路由。

Route::get('/gigs/create', [GigsController::class, 'create'])->name('clientside.gigs.create'); Route::get('/gigs/create', [GigsController::class, 'create'])->name('clientside.gigs.create'); Route::get('/gigs/{id}', [GigsController::class, 'info'])->name('clientside.gigs_info'); Route::get('/gigs/{id}', [GigsController::class, 'info'])->name('clientside.gigs_info');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM