方法 App\Http\Controllers\HomeController::home 不存在。 [Laravel 8]

Posted

技术标签:

【中文标题】方法 App\\Http\\Controllers\\HomeController::home 不存在。 [Laravel 8]【英文标题】: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');
    




【问题讨论】:

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

以上是关于方法 App\Http\Controllers\HomeController::home 不存在。 [Laravel 8]的主要内容,如果未能解决你的问题,请参考以下文章

init()方法和构造方法的区别

GroovyGroovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )

Python中静态方法和类方法的区别

类方法和实例方法

Java中的构造方法与普通方法的区别? 啥情况下用构造方法啥情况下用普通的方法

Python中静态方法和类方法的区别