現在、ルート定義として次のような一連のページがあります。
$app->get('/{region}/{instance}/events', 'MyApp\EventsController::index');
$app->post('/{region}/{instance}/events', 'MyApp\EventsController::add');
$app->get('/{region}/{instance}/event/{id}', 'MyApp\EventsController::edit');
$app->post('/{region}/{instance}/event/{id}', 'MyApp\EventsController::update');
次に、4 つのすべての関数 ( 、、、および) のパラメーターとしてandEventsController
を持たなければならないクラスがあります。それをクリーンアップして、との値をグローバルオブジェクトに移動できるかどうか疑問に思っています。region
instance
index
add
edit
update
region
instance
$app
できるようになりたいです
$app->mount('/{region}/{instance}/', new MyApp\EventsControllerProvider());
そして、変数と変数をEventsControllerProvider
検証し、そのパスの上に「イベント」ルートをマップしますが、マウントポイントに変数を含めることはできないようです (メソッドは追加のパラメーターを許可しません)。region
instance
ControllerProviderInterface::connect()
これを行うためのきれいな方法はありますか?私はこの方法を考えましたが、これは他のルーティングメカニズムに反するようです:
$app->get('/{region}/{instance}/{action}' function($region, $instance, $action) use ($app) {
if ($app['myapp.valid-region']($region) === false) return $app->abort(404);
if ($app['myapp.valid-instance']($instance) === false) return $app->abort(404);
switch ($action) {
case 'events':
$c = new MyApp\EventsController();
return $c->index();
}
});