Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 类App\Http\Controllers\homeController不存在_Php_Laravel - Fatal编程技术网

Php 类App\Http\Controllers\homeController不存在

Php 类App\Http\Controllers\homeController不存在,php,laravel,Php,Laravel,我使用的是laravel 5,在rutes.php中,我有以下代码: Route::get('about',"homeController@about"); 在App\Http\Controllers\i中,文件homeController.php包含: <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller as BaseController; class homeController e

我使用的是laravel 5,在rutes.php中,我有以下代码:

Route::get('about',"homeController@about");
在App\Http\Controllers\i中,文件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');
}
}
全部更改

homeController


我在家庭控制器上遇到了类似的问题,在我的情况下,我看到路由配置如下:

Route::get('/home',"homeController@index"); 
当我将上面的代码更改为下面的代码时,它就工作了

Route::get('/home',"App\Http\Controllers\HomeController@about");
在您的案例中,首先检查拼写,它应该是HomeController还是HomeController

您可以将路线代码更改为以下代码

因此,您可以尝试更改以下代码

Route::get('about',"HomeController@about");


希望这能奏效。

请更新您的路线

使用App\Http\Controllers\HomeController


路由::获取('/about',[HomeController::类,'about'])

这可能是因为以下两个原因:

  • 打字错误
  • 拉维缓存
  • 1)类型错误 对于此检查,请检查您的HomeController文件名和该文件中的类名。两者在区分大小写时应相同

    HomeController.php

    HomeController扩展

    2)Laravel缓存 Laravel使用以前的配置存储文件缓存。要刷新缓存,请在命令窗口中执行此操作,然后重试

    php artisan cache:clear
    php artisan view:clear
    php artisan optimize
    

    希望能解决

    是的。这是正确的,因为您没有为路由中的操作提供正确的路径。要么更新路径的核心文件,要么在路由中手动提供。例如 你有

    试试这条路

    Route::get('/about', [App\Http\Controllers\homeController::class,'about']);
    
    或者您可以键入route作为

    Route::get('/about', 'App\Http\Controllers\homeController@about');
    

    此外,您还可以检查控制器功能中的代码是否正确。

    首先,检查控制器名称是否正确。 如果是,则有3种方法:

  • Route::get('/about',App\Http\Controllers\homeController@about');
    写入控制器所在的所有路径

  • Route::get('/about',[HomeController::class,'about');

    • 转到Providers文件夹中的RouteServiceProvider.php文件
    • 搜索
      //受保护的$namespace='App\\Http\\Controllers';
      (您可以在评论中找到)
    • 删除注释的
      /
      ,然后保存。 使用此方法,您将能够直接使用控制器的名称,而无需 写下所有的路径

  • 您正在尝试Laravel7.x和之前的路由模式。请参阅8.x文档


    使用as
    [HomeController::class,'index']的新语法
    或者您需要在
    控制器
    名称之前添加名称空间,如
    App\Http\Controllers\HomeController

    如何更改名称空间App\Http\Controllers\HomeController;作为名称空间App\Http\Controllers;@vural它不工作不应该是
    HomeController
    ?因为我将
    控制器
    添加到项目中手动ect,我想我应该运行
    composer dump autoload
    。尝试从您的laravel项目目录运行命令,
    php artisan cache:clear
    此命令清除了缓存,但没有解决问题error@ako你能运行
    php artisan视图:清除
    php artisan优化
    但在你的屏幕截图
    中是项目和控制器的结构:
    文件名以大写字母开头更改
    Route::get('about',”HomeController@about“”;
    to
    Route::get('about',”homeController@about")
    并尝试如果您想弄乱项目结构,请继续。如果您有很好的理由这样做,那么,请继续。但是如果没有,类应该以大写字母开头。在IDE中使用第二种方法可以帮助线程所有者看到控制器类必须以您所说的大写字母开头他被解雇了。
    Route::get('about', 'App\Http\Controllers\HomeController@about');
    
    Route::get('/about', 'App\Http\Controllers\HomeController@about');
    
    php artisan cache:clear
    php artisan view:clear
    php artisan optimize
    
    Route::get('about',"homeController@about");
    
    Route::get('/about', [App\Http\Controllers\homeController::class,'about']);
    
    Route::get('/about', 'App\Http\Controllers\homeController@about');