【问题标题】:Method App\Http\Controllers\HomeController::home does not exist. [Laravel 8]方法 App\Http\Controllers\HomeController::home 不存在。 [Laravel 8]
【发布时间】:2020-12-29 14:46:47
【问题描述】:

我正在尝试使用 Laravel Auth 注册用户。首先我收到了App\User 未找到的错误,然后我用App\Models\User 修复它,它可以工作。我真的不知道 Laravel 8 有什么用,因为我在使用以前的版本注册用户时从来没有遇到过问题。然后我遇到了这个问题

BadMethodCallException 方法 App\Http\Controllers\HomeController::home 不存在。

我真的不知道要提供哪个代码,因为我什至没有触摸 Authentication/HomeController 的默认代码。

但我确实更改了 RouteProvider 中的命名空间

protected $namespace = 'App\Http\Controllers';

web.php

Route::get('/home', [HomeController::class,'home']);
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        return view('home');
    }
}



【问题讨论】:

  • 您正在从主控制器中的路由调用主方法。您的家庭控制器中仅存在索引方法。首先创建家庭方法将解决您的问题。
  • 感谢您指出这一点!我绝对想念索引方法。谢谢
  • 这是你的答案吗?

标签: php laravel laravel-8


【解决方案1】:

试试Route::get('/home', [HomeController::class,'index']);

【讨论】:

    【解决方案2】:

    在您的web.php 顶部您需要导入

    use App\Http\Controllers\HomeController;
    

    然后你可以使用

    Route::get('/home', [HomeController::class,'index']);
    

    否则

    Route::get('/home', 'HomeController@index')->name('home');
    

    这里用这个不用导入

    注意 - 您的错误表明您的控制器中没有home 方法,因此请创建home 方法或更改正确的method 默认为index

    【讨论】:

    • 谢谢!你用最好的方式解释了它!我的web.php 中已经有了命名空间,但我的路线中缺少index
    猜你喜欢
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 2020-05-01
    • 1970-01-01
    • 2018-05-25
    • 2021-04-04
    • 2020-05-08
    相关资源
    最近更新 更多