类App \ Http \ Controllers \ homeController不存在

时间:2016-08-17 10:43:39

标签: php laravel

我正在使用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');
}
}

但它会抛出此错误:Class App \ Http \ Controllers \ homeController不存在。 我该怎么办呢?

这里是项目和控制器的结构: enter image description here

8 个答案:

答案 0 :(得分:2)

全部改变

public static async Task<string[]> SendToAllIps(string req)
{
    var tasks = _allIps.Select(ip => SendRequest(new Uri(ip + req)));
    return await Task.WhenAll(tasks);
}

homeController

答案 1 :(得分:2)

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

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

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

    • 转到 Providers 文件夹中的文件 RouteServiceProvider.php
    • 搜索//protected $namespace = 'App\\Http\\Controllers'; (你会在评论中找到它)
    • 删除 // 条评论并保存。 使用此方法,您将可以直接使用控制器的名称,而无需 写出所有路径。

答案 2 :(得分:1)

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller as BaseController;

class homeController extends BaseController{
  public function about(){
    return view::make('about');
  }
}

答案 3 :(得分:1)

<?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吗?

答案 4 :(得分:1)

我遇到了与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');

希望这会起作用。

答案 5 :(得分:0)

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

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

试试这条路线

Route::get('/about', [App\Http\Controllers\homeController::class,'about']);

或者你可以输入路由

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

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

答案 6 :(得分:0)

您正在尝试 Laravel 7.x 和之前的路由架构。请参阅 8.x 文档。

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

答案 7 :(得分:-1)

请更新您的路线

使用App \ Http \ Controllers \ HomeController;

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