![](/img/trans.png)
[英]Method App\Http\Controllers\HomeController::home does not exist. [Laravel 8]
[英]Class App\Http\Controllers\homeController does not exist
我正在使用 laravel 5,在 rutes.php 我有这个代码:
Route::get('about',"homeController@about");
在 App\Http\Controllers\ 我有文件 homeController.php 包含:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller as BaseController;
class homeController extends BaseController{
public function about(){
return view::make('about');
}
}
但它会引发此错误:App\Http\Controllers\homeController 类不存在。 我该如何解决?
全部更改
homeController
至
HomeController
首先,检查您是否正确写入了控制器名称。 如果是,有3种方法:
Route::get('/about', 'App\\Http\\Controllers\\homeController@about');
写下控制器所在的所有路径。
Route::get('/about', [HomeController::class, 'about');
//protected $namespace = 'App\\\\Http\\\\Controllers';
(你会在评论中找到它)//
并保存。 使用此方法,您将能够直接使用控制器的名称,而无需编写所有路径。<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller as BaseController;
class homeController extends BaseController{
public function about(){
return view::make('about');
}
}
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller as BaseController;
class homeController extends BaseController{
public function about(){
return view::make('about');
}
}
应该可以完美运行。 你确定文件名是homeController.php
吗?
我在 Home 控制器上遇到了类似的问题,就我而言,我看到路由配置如下:
Route::get('/home',"homeController@index");
当我将上面的代码更改为以下代码时,它就起作用了。
Route::get('/home',"App\Http\Controllers\HomeController@about");
在你的情况下,首先检查拼写,它应该是 HomeController 还是 homeController。
您可以将您的路线代码更改为以下内容
所以你可以尝试更改以下代码
Route::get('about',"HomeController@about");
到
Route::get('about', 'App\Http\Controllers\HomeController@about');
或
Route::get('/about', 'App\Http\Controllers\HomeController@about');
希望这会奏效。
它可能由于以下两个原因而发生:
1) 类型错误对于此检查,请检查您的 HomeController 文件名和该文件中的类名。 两者都应该与区分大小写相同。
家庭控制器.php
类HomeController扩展
2) Laravel 缓存Laravel 存储文件缓存与以前的配置。 要刷新缓存,请在命令窗口中执行此命令,然后重试
php artisan cache:clear
php artisan view:clear
php artisan optimize
希望解决!。
对于HomeController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function welcome()
{
return view('welcome');
}
}
对于web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HomeController;
Route::get('/', [HomeController::class, 'welcome']);
它对我有用
是的。 这是正确的,因为您没有为路线中的动作提供正确的路径。 要么更新路径的核心文件,要么在路由中手动提供。 例如你有
Route::get('about',"homeController@about");
试试这条路线
Route::get('/about', [App\Http\Controllers\homeController::class,'about']);
或者你可以输入 route 作为
Route::get('/about', 'App\Http\Controllers\homeController@about');
此外,您可以检查控制器功能中是否有正确的代码。
您正在尝试 Laravel 7.x 和之前的路由架构。 请参阅 8.x 文档。
新语法使用 as [HomeController::class, 'index']
或者您需要在Controller
名称之前添加命名空间,如App\\Http\\Controllers\\HomeController
。
更改您的路由,如下所示:
use App\Http\Controllers\HomeController;
Route::get('/about', [HomeController::class, 'index'])->name('home');
有关更多信息,请查看此页面: https : //laravel.com/docs/8.x/routing
通过添加来更新路径的路径。
Route::get('/home', [\App\Http\Controllers\HomeController::class, 'index'])->name('home');
请更新您的路线
使用 App\\Http\\Controllers\\HomeController;
Route::get('/about', [HomeController::class, 'about']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.