phalcon目前正在调度路线名称

时间:2013-04-29 20:31:22

标签: phalcon

除了 controller action 之外,我还使用包含 namespace 的自定义路由。因此,对于ACL目的,我使用MVC路由名称作为ACL资源名称。现在我需要获取当前 DISPATCHING 路由名称。我想出的唯一解决方案是从Dispatcher获取 namespace / controller / action 并迭代所有路由找到合适的路径。

是否有最简单的方法来获取当前调度(不仅仅是匹配的)路线名称?

2 个答案:

答案 0 :(得分:5)

非常简单

\Phalcon\DI::getDefault()->get('router')->getMatchedRoute()->getName();

答案 1 :(得分:0)

您可以使用路由器,调度程序和基本控制器来获取所需内容。考虑一下:

$router = new \Phalcon\Mvc\Router(false);

$routes  = array(
    '/{namespace:"[a-zA-Z]+}/:controller' => array(
        'controller' => 2,
    ),
    '/{namespace:"[a-zA-Z]+}/:controller/:action/:params'       => array(
        'controller' => 2,
        'action'     => 3,
        'params'     => 4,
    ),
);

foreach($routes as $route => $params) {
    $router->add($route, $params);
}

现在,您可以在基本控制器中执行此操作:

public function getNamespace()
{
    return $this->dispatcher->getParam('namespace');
}

通过这种方式,您可以在控制器中提供当前名称空间(只要它们扩展了基本控制器)。

如果您需要在模型中获取命名空间,您可以随时使用DI(基本模型):

public function getNamespace()
{
    $di = \Phalcon\DI::getDefault();

    return $di->dispatcher->getParam('namespace');
}