2016-07-06 4 views
1

경로가있는 Laravel 5.2 패키지를 만들려고합니다. Http/Controllers 폴더의 컨트롤러 (네임 스페이스 vendor\package\Http\Controllers\MyController)가 있습니다. 별칭을 만들고 싶지만 어떻게해야할지 모르겠다.경로의 Laravel 패키지 컨트롤러 별칭

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

내가 Application 클래스 API이 검색을 시도했지만이 정보를 찾을 수 없습니다 :

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

그러나 그런 : 나는 그런 routes.php이 컨트롤러를 호출하고 싶지 않아요.

이 패키지 공급자의 코드는 작동하지 않습니다.

$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

도와 주셔서 감사합니다 :) –