选择路由的 Slim Framework 中间件
Slim Framework middleware that selects a route
如何在自定义 Slim 中间件中 select 路由?
我想强制执行特定路线,但我不知道该怎么做:
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();
}
}
如何在自定义 Slim 中间件中 select 路由? 我想强制执行特定路线,但我不知道该怎么做:
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();
}
}