2016-07-06 4 views
1

私はルートを使ってLaravel 5.2でパッケージを作成しようとしています。私はHttp/Controllersフォルダー内のコントローラー(名前空間vendor\package\Http\Controllers\MyController)を持っています。エイリアスを作成したいのですが、どのようにしたらよいかわかりません。私はそのようなroutes.phpでこのコントローラを呼び出すにしたくない:Laravelパッケージコントローラ別名ルート

Route::get('myurl', vendor\package\Http\Controllers\MyController::class . '@action'); 

しかし、そのように:

Route::get('myurl', '[email protected]'); 

私はApplicationクラスのAPIでこれを検索してみましたが、私は、この情報を見つけることができません。

このコードはパッケージプロバイダでは機能しません。

$this->app 
    ->alias(vendor\package\Http\Controllers\MyController::class, 'MyController'); 

マイサービスプロバイダ:

class PackageRouterServiceProvider extends ServiceProvider 
{ 
    /** 
    * Bootstrap the application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     // 
    } 

    /** 
    * Register the application services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     include(__DIR__ . '/../Http/routes.php'); 

     $this->app->alias(MyController::class, 'MyController'); // <- I tried this 
    } 
} 
+0

パッケージルートファイルではなく、アプリケーションroutes.phpファイルでパッケージコントローラを取得しようとしていますか?これは私にとってはあまり意味がありません。あなたのパッケージコントローラのアクションに動的なURLを作成したいのであれば、パッケージコンフィグレーションファイルなど、別の方法でそれを行う必要があると思います。 –

+0

@GerardRechesいいえ、いいえ、私のパッケージルートファイルです。 – ventaquil

+0

あなたのルートはフルネームスペースなしでコントローラを見つけることができないという問題がありますか?パッケージRouteServiceProviderを表示できますか? –

答えて

1

このようなあなたのPackageRouterServiceProvider.php更新するようにしてみてください。もちろん

class PackageRouterServiceProvider extends ServiceProvider 
{ 
    // Set this namespace to your package controllers namespace. 
    protected $namespace = 'vendor\package\Http\Controllers'; 

    public function boot(Router $router) 
    { 
     // 
    } 

    public function register() 
    { 
     $this->mapRoutes($this->app->router); 
    } 

    protected function mapRoutes(Router $router) 
    { 
     $router->group(['namespace' => $this->namespace], function($router) { 
      require (__DIR__ . '/../Http/routes.php'); 
     }); 
    } 
} 

を、あなたはであなたのLaravel設定app.phpファイルに、このプロバイダを登録する必要があります仕事を命じる

+0

ありがとう、それは動作します:)しかし、あなたは '$ this-> app-> router'がありません。私はあなたの答えを編集しました。再度、感謝します。 – ventaquil

+1

よろしくお願いします:) –

関連する問題