Package

Routing

by XEJapan posted Nov 22, 2015
?

Shortcut

PrevPrev Article

NextNext Article

ESCClose

Larger Font Smaller Font Up Down Go comment Print

Routing

개요

Routing 은 사이트 내부의 URL 을 관리하는 역할을 수행합니다. Menu 패키지와 밀접한 관������ 있으��, Site 와의 연관성도 존재합니다. Menu 로 부터 생성된 모듈 Instance 는 link 정보�� 담고 있는데, 이 때의 link 가 사용자��� 사이트에 접속했을 때 확인하��� 되는 URL 이 됩니다. 따라서 Routing 패키지는 사이트의 Instance 정보와 모듈의 정보�� 담고 있다고 할 수 있습니다. Menu 와 중복적인 부���이라고 할 수 있������ Menu 와는 다르��� 사이트 내부에서 동작하는 URL 만을 관리합니다. 또한 Routing 패키지는 Illuminate Routing 에 Route 들을 등록할 수 있��� 인터페이스�� 제공합니다.

목적

사이트맵에서 MenuItem을 추���하였을 때 새���운 인스턴스가 생성됩니다. 이 때 생성된 인스턴스는 URL 정보�� 담고 있는데, 사용자��� 사이트에 접속했을 때 해당 URL 에 따라서 어떠한 플러그인 모듈이 동작해야 되는��� 결정됩니다. Routing 은 URL 에 따라 인스턴스�� 판���하��� 해당 플러그인 모듈이 실행될 수 있도��� 하는 역할을 수행합니다.

구성

Routing 은 InstanceRoute 라고 하는 Entity 로 구성됩니다. 이 Entity는 InstanceId, Module Id, Site Key, Url 정보�� 담고 있습니다. 이 때 URL 은 host �� 제외한 segments 의 정보입니다.

Route 추��� 인터페이스

Routing 패키지는 Illuminate Router 에 추���적으로 등록할 수 있는 인터페이스�� 제공합니다. 이렇��� 되면 XE 에서 Router �� 등록하는 방���에 다음의 3가��� 형식이 추���됩니다.

  • Route::instance 플러그인의 모듈에서 인스턴스별 Route 동작을 등록할 때 사용됩니다.
Route::instance(self::getId(), function () {

    Route::get('/', ['as' => 'index', 'uses' => 'UserController@index']);
    Route::put('/preview', ['as' => 'preview', 'uses' => 'UserController@preview']);

}, ['namespace' => 'Xpressengine\MyPlugin\SomeModule\Controllers']);
  • Route::settings 플러그인에서 별도의 관리자 영역에 해당하는 Route�� 등록할 때 사용됩니다.
Route::settings(self::getId(), function () {
    Route::get('edit/{instanceId}', ['as' => 'manage.myPlugin.someModule.edit', 'uses' => 'SettingsController@edit']);
    Route::put(
        'update/{instanceId}',
        ['as' => 'manage.myPlugin.someModule.update', 'uses' => 'SettingsController@update']
    );

}, ['namespace' => 'Xpressengine\MyPlugin\SomeModule\Controllers']);
  • Route::fixed 플러그인에서 고유한 경������ 지정된 Route�� 등록할 때 사용됩니다.
 - Route::fixed('KEY', function(){ } );

연관 데이터베이스

Routing 패키지는 instanceRoute 데이터베이스 테이블을 사용합니다.