Как я могу получить параметр в этом случае?
$this->get('/{id}', function($request, $response, $args) {
return $response->withJson($this->get('singleSelect'));
});
$this->appContainer['singleSelect'] = function ($id) {
return $this->singleSelect($id);
};
public function singleSelect($id) {
return $id;
}
Заранее спасибо.
ОБНОВИТЬ
Решение в моем случае:
$app->group('/id', function () {
$this->get('/{id}', function($request, $response, $args) {
$this['container'] = $args; //work with $args inside the container
return $this->singleSelect($id);
});
});
Если я правильно понимаю, сервисы не имеют доступа к параметрам маршрутов. Все, что вы можете получить, это сам контейнер, но может быть сложно получить информацию об аргументах из него (что-то вроде $container->getRoutes()['<routename>']->getArguments()
где <routename>
роутер может иметь подгруппы и т. д.)
ИМХО ваш код должен выглядеть так:
$container = new \Slim\Container;
$app = new \Slim\App($container);
class Example {
public function singleSelect($id) {
return $id;
}
}
$container['example'] = function () {
return new Example();
};
$app->group('/id', function () {
$this->get('/{id}', function($request, $response, $args) {
return $response->withJson($this->example->singleSelect($args['id']));
});
});
$app->run();
Других решений пока нет …