0

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

4

2 回答 2

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;
}
于 2013-07-28T12:33:28.207 回答
-1

通过传递 Zend_Controller_Request_Abstract 实例来使用前端控制器的 isDispatchable - 方法。

if( $front->getDispatcher()->isDispatchable($testRequest) )  
{  
    //Do somthing
}
于 2013-07-28T09:39:20.167 回答