我使用定製的路線,其中包括命名空間除了控制器和行動。因此,爲了ACL目的,我使用MVC路由名稱作爲ACL資源名稱。現在我需要獲得DISPATCHING路由名稱。我想出的唯一解決方案是從Dispatcher獲得命名空間/控制器/動作,並遍歷所有路徑找到合適的路徑。爾康目前調度路由名稱
是否有任何最簡單的方法獲得當前調度(不只是匹配)的路線名稱?
我使用定製的路線,其中包括命名空間除了控制器和行動。因此,爲了ACL目的,我使用MVC路由名稱作爲ACL資源名稱。現在我需要獲得DISPATCHING路由名稱。我想出的唯一解決方案是從Dispatcher獲得命名空間/控制器/動作,並遍歷所有路徑找到合適的路徑。爾康目前調度路由名稱
是否有任何最簡單的方法獲得當前調度(不只是匹配)的路線名稱?
您可以使用您的路由器,調度器和基本控制器來獲得您所需要的。試想一下:
$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');
}
很容易
\Phalcon\DI::getDefault()->get('router')->getMatchedRoute()->getName();
嗯,我也沒問怎麼獲取調度命名空間,但**路由名稱** – dVaffection 2013-07-02 19:02:28