首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel控制器类的问题

Laravel控制器类的问题
EN

Stack Overflow用户
提问于 2021-08-24 14:18:12
回答 3查看 64关注 0票数 0

我知道这个问题已经被问了几次了,但没有一个答案对我有效,这就是为什么我再次问这个问题。

我正在尝试用Laravel创建一个小网站,我创建了一条路由和一个控制器,但当我试图在url中访问它时,我得到了这个错误:

代码语言:javascript
复制
Illuminate\Contracts\Container\BindingResolutionException
Target class [Admin\PlanController] does not exist.

这是我的web.php

代码语言:javascript
复制
use Illuminate\Support\Facades\Route;


Route::get('admin/plans', 'Admin\PlanController@index')->name('plans.index');

Route::get('/', function () {
    return view('welcome');
});

这是我的PlanController.php

代码语言:javascript
复制
namespace App\Http\Controllers\Admin;

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

class PlanController extends Controller
{
    public function index(){
        return view('admin.pages.plans.index');
    }
}

如果有任何帮助,这里是我的RouteServiceProvider.php

代码语言:javascript
复制
    protected $namespace = 'App\\Http\\Controllers';

    public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            Route::prefix('api')
                ->middleware('api')
                ->namespace($this->namespace)
                ->group(base_path('routes/api.php'));

            Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/web.php'));
        });
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-24 15:32:00

你的代码看起来一切正常。确认一个目录下的控制器必须是

代码语言:javascript
复制
app\Http\Controllers\Admin

或者做一些改变

代码语言:javascript
复制
$this->routes(function () {
        Route::middleware('web')
            ->namespace('App\Http\Controllers')
            ->group(base_path('routes/web.php'));

而不是在RouteServiceProvider.php中使用获取名称空间值作为变量。

票数 1
EN

Stack Overflow用户

发布于 2021-08-24 14:27:46

如果您使用的是Laravel 8,最好使用新的路由语法,如下所示:

代码语言:javascript
复制
use App\Http\Controllers\Admin\PlanController;

Route::get('/admin/plans', [PlanController::class, 'index'])->name('plans.index');

确保控制器位于正确的目录app/Http/Controllers/Admin

票数 0
EN

Stack Overflow用户

发布于 2021-08-24 21:25:08

您可以在您的路由中描述完整的命名空间;

代码语言:javascript
复制
Route::get('admin/plans','App\Http\Controllers\Admin\PlanController@index')->name('plans.index');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68908937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档