目标类不存在。laravel 8 中的问题

当使用 laravel 8 创建新项目时,出现此错误。

Illuminate\Contracts\Container\BindingResolutionException 目标类 [SayhelloController] 不存在。http://127.0.0.1:8000/users/john

<?php

    

use Illuminate\Support\Facades\Route;

     

Route::get('/', function () {

    return view('welcome');

});  

    

Route::get('/users/{name?}' , [SayhelloController::class,'index']);

在 Laravel 文档中,路由控制器类必须这样定义


 // Using PHP callable syntax...

Route::get('/users', [UserController::class, 'index']);


// Using string syntax...

Route::get('/users', 'App\Http\Controllers\UserController@index');

目标类别


<?php


namespace App\Http\Controllers;


use Illuminate\Http\Request;


class SayhelloController extends Controller

{

    public function index($name = null)

    {

        return 'Hello '.$name;

    }

}

所以我确实这么做了。


慕少森
浏览 151回答 1
1回答

噜噜哒

Laravel 8 更新了路由的编写方式在 laravel 8 中你需要使用像use App\Http\Controllers\SayhelloController; Route::get('/users/{name?}' , [SayhelloController::class,'index']);或者Route::get('/users', 'App\Http\Controllers\UserController@index');如果你想使用旧的方式然后在RouteServiceProvider.php添加这一行 /**     * This namespace is applied to your controller routes.     *     * In addition, it is set as the URL generator's root namespace.     *     * @var string     */    protected $namespace = 'App\Http\Controllers'; // need to add in Laravel 8    public function boot(){    $this->configureRateLimiting();    $this->routes(function () {        Route::prefix('api')            ->middleware('api')            ->namespace($this->namespace) // need to add in Laravel 8            ->group(base_path('routes/api.php'));        Route::middleware('web')            ->namespace($this->namespace) // need to add in Laravel 8            ->group(base_path('routes/web.php'));    });}然后你可以使用像Route::get('/users/{name?}' , [SayhelloController::class,'index']);Route::resource('/users' , SayhelloController::class);或者Route::get('/users', 'UserController@index');
打开App,查看更多内容
随时随地看视频慕课网APP