“目标类 [Modules\\Admins\\Controllers\\AdminController] 不存在。”
Posted
技术标签:
【中文标题】“目标类 [Modules\\\\Admins\\\\Controllers\\\\AdminController] 不存在。”【英文标题】:"Target class [Modules\\Admins\\Controllers\\AdminController] does not exist."“目标类 [Modules\\Admins\\Controllers\\AdminController] 不存在。” 【发布时间】:2021-10-18 18:22:37 【问题描述】:我正在使用 Laravel 8 开发一个电子商务网站,我尝试更改 Laravel 文件夹结构我已将视图文件夹放在新路径 modules/admins 中,它工作正常,我'还在 modules/admins 路径中创建了一个模型文件夹,它工作正常,但是,我在控制器文件夹中遇到了问题。
我仍然有 app/http/controllers/Controller.php,但现在我在 modules 文件夹中创建了一个名为 Controllers 的文件夹,其中我有一个名为 AdminController 的控制器
错误信息: “目标类 [Modules\Admins\Controllers\AdminController] 不存在。”
项目结构 enter image description here
AdminController 文件
namespace Modules\Admins\Controllers;
use App\Http\Controllers\BaseController;
use App\Http\Traits\ApiDesignTrait;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\
Hash, Validator
;
class AdminController extends BaseController
public function test()
return true;
route.php
use Illuminate\Support\Facades\Route;
use Modules\Admins\Controllers\AdminController;
Route::post('/test', [AdminController::class, 'test']);
BaseController.php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class BaseController extends Controller
Controller.php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
【问题讨论】:
如果命名空间正确,请尝试在终端中也运行 composer dump-autoload。 我执行了命令但没有发生变化 @zihad 我想我需要一种方法来注册控制器的路径,或者在某处更改默认路径,但我不知道。 【参考方案1】:因为您定义的命名空间在应用程序之外,您应该在您的composer.json
文件中自动加载它。
"autoload":
"psr-4":
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/",
"Modules\\": "Modules/"
,
然后运行composer dump-autoload
,它应该可以正常工作了。
【讨论】:
有一个不好的表达式我会修复它,其中 admin 文件夹位于 modules 文件夹和 admin 文件夹内,我创建了视图、模型和控制器文件夹,我将编辑问题。 @mahmoudmohamed 我添加了更新。它将解决您的问题。 终于运行良好,感谢您的帮助【参考方案2】:需要在路由服务提供者类中更改路由文件的命名空间
在app/Providers/RouteServiceProvider.php
你需要编辑开机功能
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
$this->configureRateLimiting();
$this->routes(function ()
Route::middleware('web')
->namespace('Modules\\Admins\\Controllers')
->group(base_path('routes/route.php'));
);
在你的 route.php 中你可以这样做
Route::post('/test', 'AdminController@test');
如果您不想编辑服务提供者
Route::namespace('Modules\\Admins\\Controllers')->group(function ()
Route::post('/test', 'AdminController@test');
);
【讨论】:
以上是关于“目标类 [Modules\\Admins\\Controllers\\AdminController] 不存在。”的主要内容,如果未能解决你的问题,请参考以下文章