【问题标题】:404 error on detailspage but Route exists in Laravel,详细信息页面上的 404 错误,但 Laravel 中存在 Route,
【发布时间】:2021-11-06 20:30:51
【问题描述】:

当我尝试获取服务的详细信息页面时收到 404 错误。我希望您能帮助我解决这个 404 错误。提前谢谢你。

HomeController.php

public function department(Request $request, $slug)
    {
         //$service=Service::where('service_slug', $slug)->first();
          $service = Service::findOrFail($slug);
          return view('client.department.departmentdetails')->with('service', $service);
          //return redirect()->route('department.show');


web.php

Route::get('/department/{slug}', 'HomeController@department')->name('department.show');

header.php

<li class="mega-menu-item">
    <a href="/departments" class="mega-menu-link">Departments</a>
       <ul class="mega-submenu">
         @foreach(\Illuminate\Support\Facades\DB::table('services')->get() as $service)
         <li><a href="{{ route('department.show',$service->service_slug) }}">
          {{$service->service_name}}</a>
        </li>
         @endforeach

我试过了

  1. php 工匠路线:清除
  2. 在 Home Controller 中返回 return redirect()-&gt;route('department.show'); 现在已注释

编辑

public function department(Request $request, $id)
    {
        //$service=Service::where('service_slug', $slug)->first();
        //$service = Service::findOrFail($slug);
          $service = Service::findOrFail($id);
          //return view('client.department.departmentdetails')->with('service', $service);
          return redirect()->route('department.show');

        
    }

【问题讨论】:

  • $service = Service::findOrFail($slug); findOrFail() 采用 id 作为参数,而不是 slug。您是否将模型主键更改为使用service_slug?您在上面评论的那一行应该这样做
  • 你好,我还是遇到同样的 404 错误,检查上面的编辑。
  • 您是否更改了路线以使用id 作为参数? Route::get('/department/{id}...' 导致 404 的 URL 是什么?在你的方法结束时重定向有什么用,似乎没有意义?

标签: laravel


【解决方案1】:

如果您的路线显示:

Route::get('/department/{id}', 'HomeController@department')->name('department.show');

然后在您的控制器中,您应该访问传递给 URL 中路由的 ID,如下所示:

public function department(Request $request)
{
      $service = Service::findOrFail($request->id);
}

当你想要返回视图时,你当前的代码会返回一个重定向到相同的路由:

    public function department(Request $request)
{
      $service = Service::findOrFail($request->id);
      return view('client.department.departmentdetails')->with('service', $service);
}

并且,为了方便起见,您可能希望将其压缩如下:

    public function department(Request $request)
{
      $service = Service::findOrFail($request->id);
      return view('client.department.departmentdetails')->with(compact('service'));
}

在 header.php 中,您的 $service 将自动可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多