是否有可能在Slim容器中獲取路由佔位符的值?我知道我可以通過向請求添加第三個參數來訪問佔位符,但我希望將它注入,以便我不在每個請求上分配它。PHP Slim在容器中獲取路徑佔位符
我已經嘗試了$ app-> getContainer('router'),但我似乎無法找到實際拉佔位符值的方法。
例子:
$app = new Slim\App;
$c = $app->getContainer();
$c['Controller'] = function() {
$userId = // how do I get the route placeholder userId?
return new Controller($userId);
};
$app->get('/user/{userId}','Controller:getUserId');
class Controller {
public function __construct($userId) {
$this->userId = $userId;
}
public function getUserId($request,$response) {
return $response->withJson($this->userId);
}
}
它確實有效,但你是正確的。這很不好意思。如果我要實現它,我可能會創建一個全局容器來返回一個函數來處理這個問題。 – Rob
@rob您是否嘗試過我的解決方案......它也有點怪異(在我看來沒有那麼多),但是更通用一些,並且擁有主控制器也是一件好事,您可以訪問每個控制器中的容器 –
@SimonMüller我看着它,看起來有點矯枉過正。 jmattheis提供的答案確實解決了我的問題,但讓我想到容器是否真的應該承擔這個責任。 – Rob