我在文件夹App \ Web \ Controllers \ WebController中有一个控制器WebController。
WebController
<?php namespace App\Web\Controllers;
use Illuminate\Http\Request;
class WebController extends Controller
{
public index(){
return view('layouts.master');
}
}
路线
Route::get('home_page','WebController@index');
当我呼叫这条路线时,出现以下错误:
App \ Http \ Controllers \ WebController类不存在
答案 0 :(得分:0)
这与路由系统有关。
在App\Providers\RouteServiceProvider.php
中,您将找到map()
方法:
/**
* Define the routes for the application.
*
* @return void
*/
public function map()
{
$this->mapWebRoutes();
$this->mapApiRoutes();
}
在该类下,您将找到“ Web Routes”命名空间的定义
/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*
* @return void
*/
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace) // 'App\Http\Controllers'
->group(base_path('routes/web.php'));
}
现在,您只需要根据自己的喜好更改namespace()
属性
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace('App\Web\Controllers')
->group(base_path('routes/web.php'));
}
答案 1 :(得分:0)
class WebController extends **Controller**
这种关系有问题。您必须将控制器导入此文件。您不见了
use App\Http\Controllers\Controller
另外,您的路线错误。试试这个
Route::namespace('your namespace here')->group(function () {
Route::get('/', 'your-controller-here@your-method');
});
请勿更改routeserviceprovider的配置
答案 2 :(得分:0)
您可以在RouteServiceProvider中更改默认名称空间。
protected $namespace = 'App\Http\Controllers';
App\Http\Controllers
是默认名称空间,您可以将其更改为
protected $namespace = 'App\Web\Controllers';
然后您的代码应该可以运行
答案 3 :(得分:0)
我建议使用命名空间从Devetoka上面的代码,或者对于仅一个或两个控制器(在我的情况下),您可以简单地注入完整的命名空间。这已经过测试并且可以工作。
(2, 3)