【问题标题】:Laravel : Class controller does not existLaravel:类控制器不存在
【发布时间】:2018-07-15 00:19:03
【问题描述】:

我创建了一个简单的控制器并定义了一个函数。但是当我运行它时,它会返回一个控制器不存在的错误。

在我的 web.php 中分配一个路由。

<?php
  Route::get('/', function () { return view('front.welcome'); });
  Route::get('plan','PlanController@PlanActivity')->name('plan');

在我的控制器的另一边,我的代码:

<?php
 namespace App\Http\Controllers\Front;
 use App\Http\Controllers\Controller as BaseController;
 use Illuminate\Http\Request;

class PlanController extends Controller {

public function PlanActivity()
{
    dd("hello");
    //return view('admin.index');
}
}

这个控制器创建在 App\Http\Controllers\Front - 在前面的文件夹中

错误:

反射异常 (-1) 类 App\Http\Controllers\PlanController 不存在

【问题讨论】:

  • Route::get('plan','Front\PlanController@PlanActivity')-&gt;name('plan');
  • @javed 删除不需要使用 App\Http\Controllers\Controller 作为 BaseController 的这一行;
  • @javed 检查控制器中的命名空间和文件夹名称是否匹配

标签: laravel laravel-5.5


【解决方案1】:

首先在定义路由时,请确保为控制器使用正确的路径。正确的是:

Route::get('plan','Front/PlanController@PlanActivity')->name('plan');

第二次你将Controller 类导入为BaseController。所以你应该扩展BaseController 而不是Controller

class PlanController extends BaseController {

public function PlanActivity()
{
    dd("hello");
    //return view('admin.index');
}
}

【讨论】:

  • 有趣的是,Leo 从我的答案中复制了错误的代码,而您从他的答案中复制了错误的代码。
  • @AlexeyMezenin 别担心,我们知道你是 laravel 的第一用户!我们向您学习。
  • @Alexey 在我写答案的时候,你的答案没有发表。我刚刚从问题中复制了一些文字。
【解决方案2】:

Front 部分添加到:

Route::get('plan', 'Front\PlanController@PlanActivity')->name('plan');

另外,将控制器的顶部更改为:

namespace App\Http\Controllers\Front;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

然后运行composer du

来自the docs

默认情况下,RouteServiceProvider 将您的路由文件包含在命名空间组中,允许您注册控制器路由而无需指定完整的 App\Http\Controllers 命名空间前缀。因此,您只需指定位于基本 App\Http\Controllers 命名空间之后的命名空间部分。

【讨论】:

  • 那么可以在控制器中定义namespace App\Http\Controllers\Front;
猜你喜欢
  • 2015-05-23
  • 2019-02-05
  • 2015-04-21
  • 2014-05-29
  • 2015-04-20
  • 2019-03-26
  • 2014-11-11
  • 2020-12-27
相关资源
最近更新 更多