Как выбрать маршрут в пользовательском промежуточном ПО Slim?
Я хотел бы указать конкретный маршрут, но я не знаю, как это сделать:
class Acl extends \Slim\Middleware{
public function call()
{
if($isnotlogged){
//force to select "login" route
...
}
$this->next->call();
}
}
Это похоже на рабочий хак:
Свойство \ Slim \ Router $ matchedRoutes имеет защищенную видимость, поэтому я должен создать собственный маршрутизатор, чтобы переопределить его:
class MyRouter extends \Slim\Router {
public function setRoute(\Slim\Route $route){
$this->matchedRoutes=[$route];
}
}
Когда я инициализирую Slim, я должен установить свой маршрутизатор:
$app = new \Slim\Slim();
$app->router=new MyRouter();
Наконец, я могу принудительно выбрать маршрут в своем промежуточном программном обеспечении:
class Acl extends \Slim\Middleware{
public function call()
{
if($isnotlogged){
$this->getApplication()->router()->setRoute($this->getApplication()->router->getNamedRoute("login"));
}
$this->next->call();
}
}
Других решений пока нет …