Laravel:类控制器不存在
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/48617556/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Laravel : Class controller does not exist
提问by Javed
I have created a simple controller and define a function. But when i run this it returns an error that controller does not exist.
我创建了一个简单的控制器并定义了一个函数。但是当我运行它时,它返回一个错误,即控制器不存在。
In my web.php assign a route.
在我的 web.php 中分配一个路由。
<?php
Route::get('/', function () { return view('front.welcome'); });
Route::get('plan','PlanController@PlanActivity')->name('plan');
On otherside in my controller my code:
在我的控制器的另一边我的代码:
<?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');
}
}
This controller created on App\Http\Controllers\Front - on front folder
这个控制器在 App\Http\Controllers\Front 上创建 - 在前面的文件夹上
Error :
错误 :
ReflectionException (-1) Class App\Http\Controllers\PlanController does not exist
ReflectionException (-1) 类 App\Http\Controllers\PlanController 不存在
回答by Alexey Mezenin
Add Front
part to:
添加Front
部分到:
Route::get('plan', 'Front\PlanController@PlanActivity')->name('plan');
Also, change the top of the controller to:
此外,将控制器的顶部更改为:
namespace App\Http\Controllers\Front;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
And run composer du
.
并运行composer du
。
From the docs:
从文档:
By default, the
RouteServiceProvider
includes your route files within a namespace group, allowing you to register controller routes without specifying the fullApp\Http\Controllers
namespace prefix. So, you only need to specify the portion of the namespace that comes after the baseApp\Http\Controllers
namespace.
默认情况下,将
RouteServiceProvider
您的路由文件包含在命名空间组中,允许您在不指定完整App\Http\Controllers
命名空间前缀的情况下注册控制器路由。因此,您只需要指定位于基本App\Http\Controllers
名称空间之后的名称空间部分。
回答by Usama
First when defining route, make sure to use the correct path for the controller. the correct is:
首先在定义路由时,确保为控制器使用正确的路径。正确的是:
Route::get('plan','Front/PlanController@PlanActivity')->name('plan');
Second you have imported Controller
Class as BaseController
. so you should extends BaseController
not Controller
:
其次,您已将Controller
Class导入为BaseController
. 所以你应该伸出 BaseController
不是Controller
:
class PlanController extends BaseController {
public function PlanActivity()
{
dd("hello");
//return view('admin.index');
}
}