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
데이터베이스 테이블을 사용합니다.