如果控制器和操作存在与否,如何检入ZF2

时间:2013-07-28 07:58:55

标签: zend-framework2

如果控制器和操作是否存在,如何在控制器中检入ZF2? 我的控制器必须检查是否存在可以创建窗口小部件的指定控制器和操作。 感谢。

2 个答案:

答案 0 :(得分:2)

可通过控制器的服务定位器访问控制器。如果实例可用,您可以检查控制器加载程序。如果是,则创建该实例并检查该操作是否为有效方法。

在代码中:

// Inside your controller

protected function validateDispatchable($controller, $action)
{
    $loader = $this->getServiceLocator()->get('ControllerLoader');
    if (!$loader->has($controller)) {
        return false; // No controller
    }

    $obj    = $loader->get($controller);
    $method = $obj::getMethodFromAction($action);

    if (!method_exists($obj, $method)) {
        return false; // No action
    }

    return true;
}

答案 1 :(得分:-1)

使用isDispatchable - 前端控制器的方法,传递一个Zend_Controller_Request_Abstract实例。

if( $front->getDispatcher()->isDispatchable($testRequest) )  
{  
    //Do somthing
}