这是我的控制器:
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class RegisterController extends Controller
{
public function register(Request $request)
{
dd('aa');
}
}
如截图所示,类存在并且在正确的位置:
我的api.php路由:
Route::get('register', 'Api\RegisterController@register');
当我使用Postman命中我的寄存器路径时,它给了我以下错误:
目标类[Api\RegisterController]不存在。
我该怎么解决呢?
多亏了这些答案,我才得以修复它。我决定对这个路由使用完全限定类名,但是答案中描述了其他选项。
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
也检查你的路由web.php文件,如果你的RegisterController是正确的。
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\RegisterController;
Route::get('/register',[RegisterController::class,'index'])->name('register');
Route::post('/register',[RegisterController::class,'store']);
Route::get('/', function () {
return view('test.index');
});
在Laravel 8中,默认是删除名称空间前缀,所以你可以在Laravel 7中设置旧的方式:
在RouteServiceProvider.php中添加这个变量:
protected $namespace = 'App\Http\Controllers';
并更新启动方法:
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
});
}