如何将我的控制器移动到 Laravel 5.2 中的单独包文件夹中?

Jun*_*ior 4 php laravel laravel-routing laravel-5 laravel-5.1

我使用 laravel 5.2 构建了一个小应用程序。我将所有文件放入名为 Surveys 的文件夹中,该文件夹位于App/Modules/Surveys. “不用担心,我打算将模块移出 App 文件夹,我只需要让控制器工作”

目前我的控制器位于 App/Http/Controllers/SurveysController

我想移动我的控制器文件夹,使其位于 App/Modules/Surveys/Controllers/Frontend/SurveysController

我如何告诉 laravel 将控制器解析出这条路径App/Modules/Surveys/Controllers/Frontend/而不是App/Http/Controllers

我试图对服务提供商执行此操作,但仍然无法正常工作

<?php

namespace App\Modules\Surveys\Providers;

use Illuminate\Support\ServiceProvider;

class PackageServiceProvider extends ServiceProvider
{

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {

        if (! $this->app->routesAreCached()) {
            require __DIR__.'/../routes.php';
        }

    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {

        $this->app->make('Modules\Surveys\Controllers\Frontend\SurveyController');
    }

}
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能使路由指向正确的控制器?

只是为了清楚起见,我的应用程序讲师从应用程序开始

App/Https/Controllers App/Modules/Surveys

Jun*_*ior 5

我想我想通了。

App/Providers/RouteServiceProvider文件内部,我将$namespace变量的值更改为这样的空字符串

更改了以下行 protected $namespace = 'App\Http\Controllers';

对此 protected $namespace = '';

然后在我的 routes.php 文件中,我使用了这样的命名空间

Route::group([
    'namespace' => 'Modules\Vendname\Surveys\Controllers\Frontend',
], function()
{
    Route::get('/survey', ['as' =>'survey.index', 'uses' => 'SurveysController@index']);
});
Run Code Online (Sandbox Code Playgroud)

我不确定为什么 Taylor 在服务提供商中硬编码了值,而不是配置中的选项,但这个解决方案似乎有效!

如果有一种动态方式来覆盖该值,我会更好。