使控制器从Laravel的非标准目录工作?



我正在创建一个基本代码,最终将为多个站点工作。我成功地将其拆分以支持多个"视图"。文件夹,但我不知道如何做同样的控制器。这是一般的结构:

/app/Http/Controllers     <--- standard controller folder
/resources/view           <--- standard view folders

这是我想要的结构:

/sites/ASITE/view         <--- this I got working
/sites/ASITE/Controllers  <--- this I don't know how to get working

如果我在/app/Http/Controllers中创建一个控制器,并创建一个路由:

Route::get('/test', 'AppHttpControllersTestController@test')->name('Test');

然后它工作良好,如果我调用/test。但是如果我把它移到"/sites/ASITE/Controllers"并将命名空间更改为:

sitesASITEControllers;

制作路线:

Route::get('/test', 'sitesASITETestController@test')->name('Test');

然后我得到错误"目标类[sitesASITETestController]不存在">

关于如何让控制器从另一个文件夹工作的任何想法?

AppHttpControllersTestController没有告诉LaravelTestController.php存在于App/Http/Controllers中。说明TestController类在名称空间AppHttpControllers中。

TestController.php:

中有这样一行
namespace AppHttpControllers;

如果你想改变命名空间,你需要在这里做:

namespace sitesASITE;

App名称空间可用,而sites名称空间不可用的原因是您没有在composer.json中定义sites名称空间:

"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\": "app/",
"sites\": "sites/" <<< Add this line here
}
},

最新更新