【问题标题】:Laravel 8 getting BindingResolutionException error after upgradeLaravel 8 升级后出现 BindingResolutionException 错误
【发布时间】:2021-01-18 10:59:22
【问题描述】:

Laravel v:7 升级到8 后出现以下错误,我无法解决该问题

Illuminate\Contracts\Container\BindingResolutionException
Target class [Frontend\HomeController] does not exist. 

我的控制器namespace和目录结构:

|- app
    |- Http
        |- Controllers
            |- Frontend
                 -HomeController.php
             - Controller.php

路线:

Route::namespace('Frontend')->group(function () {
    Route::get('/', 'HomeController@index')->name('home');
});

然后HomeController.php

<?php

namespace App\Http\Controllers\Frontend;

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

class HomeController extends Controller
{
    public function index()
    {
        dd('aaaa');
    }

    public function create()
    {
        //
    }

    public function store(Request $request)
    {
        //
    }

    public function show($id)
    {
        //
    }

    public function edit($id)
    {
        //
    }

    public function update(Request $request, $id)
    {
        //
    }

    public function destroy($id)
    {
        //
    }
}

使用以下命令也无法解决我的问题:

php artisan clear-compiled
php artisan optimize:clear
composer dump-autoload

【问题讨论】:

    标签: php laravel laravel-8


    【解决方案1】:

    在 laravel 8 中,你需要这样做:

    use App\Http\Controllers\Frontend\HomeController;
    
    Route::get('/', [HomeController::class, 'index'])->name('home');
    

    Laravel 在 V8 中不会自动添加命名空间前缀。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多