Laravel 4 を使用してaccountname
、各顧客が名前空間を持つ API を作成しています。各顧客は、独自の同一のデータベースを持っています。したがって、Foocorp は次のような API 呼び出しを行う必要があります。
Barcorp API 呼び出しは次のようになります
ビジネス/ブランディング上の理由から URL にアカウント名を含める必要があるため、URL ルートからこのパラメーターを削除することはできません。
これは、ルートからアカウント名を引き出し、それがアクティブであることを確認し、データベースを指すようにするために使用したフィルターです。accountname
すべてのコントローラー関数を記述して、すべてのパラメーターを含めないように、パラメーターを削除したいと考えてい$accountname
ました。
Route::filter('accountverification', function()
{
$route = Route::getCurrentRoute();
$params = $route->getParameters();
$accountName = $params['accountname'];
// verify account with this name exists and set up DB connection to point to their database
// ...
unset($params['accountname']);
$route->setParameters($params);
});
フィルタを使用するルート グループは次のとおりです。
Route::group(array('prefix' => '{accountname}', 'before' => 'accountverification'), function() {
Route::get('users/{id}', 'UsersController@getShow')
->where(array('id' => '[0-9]+'));
});
問題は、フィルターのパラメーターを削除しても、コントローラー/関数が呼び出されたときに効果がないことです。UsersController::getShow 関数では、最初のパラメーターは常にaccountname
グループ プレフィックスからのものです。
関数に渡されないリクエストがディスパッチされる前に、すべてのルートに変数/パラメータを含める方法はありますか?