使用Zend应用程序我需要验证一个URI是否存在(在我的应用程序的内部),然后将用户重定向到该页面。我怎样才能执行这个控制?如何使用Zend Framework检查内部URI是否存在?
0
A
回答
0
有几种方法可以做到这一点...见下文。
我认为最好的方法是使用ACL MVC规则 - 为您的应用程序增加安全性,并可用于检查资源(模型/控制器/操作)是否存在。
选项1
建设类名,并得到它的方法,看看您的行为存在。无论是使用get_class_methods
或ReflectionClass::getMethods
/**
* @param string $controller name of controller e.g. "index"
* @param string $action name of action e.g. "index", "myAction"
* @param string $module (optional) name of the current module
* @return boolean
*/
protected function _isControllerAction($controller, $action, $module = '')
{
$module = ($module == 'default') ? '' : $module;
$class = ucfirst($module) . ucfirst($controller) . 'Controller';
$methods = get_class_methods($class);
return in_array("{$action}Action", $methods);
}
选项2
您可以检查模块/控制器的分派。这不会检查请求中的操作和混乱情况!如果你这样做,然后添加额外的代码来恢复请求状态。
protected function isDispatchableController()
{
$this->getRequest()
->setModuleName('default')
->setControllerName('index');
$dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
/* @var $dispatcher Zend_Controller_Dispatcher_Standard */
return $dispatcher->isDispatchable($this->getRequest());
}
选项3
技术上你可以跳过这一切的检查和落实默认ErrorHandler
,让它重定向到ErrorController ......然后添加特殊处理404
选项4
如果您使用ACL,您可以检查资源是否存在,并且用户是否有权访问它。 这里是好文章Zend ACL MVC Integration
0
如果你使用的是Zend Framework 2,这很简单。
假设我们要检查URI是否与注册路由器相匹配,并重定向用户,如果这与当前url不同。
$goto = 'http://www.mysite.tld/admin';
$request = $this->getRequest();
$request->setUri($goto);
if ($routeToBeMatched = $this->getServiceLocator()->get('Router')->match($request)) {
$currentRouteMatchName = $this->getEvent()->getRouteMatch()->getMatchedRouteName();
if ($routeToBeMatched->getMatchedRouteName() != $currentRouteMatchName) {
return $this->redirect()->toRoute($goto);
}
}
相关问题
- 1. 如何使用Zend Framework检查控制器是否存在
- 2. 如何检查headTitle是否已在Zend Framework中使用?
- 3. 检查一个URI是否存在?
- 4. Zend Framework:检查路由是否存在于代码
- 5. Zend Framework和Jquery :: Ajax - 检查id是否可用 - 如何?
- 6. 检查是否存在相对URI
- 7. 如何使用zend验证器检查文件是否存在 - zend框架2.0
- 8. Zend Framework:检查Zend View占位符是否已设置
- 9. 如何使用Zend Framework检查登录在线用户
- 10. 如何检查TAG是否存在于PHP内部的XML中?
- 11. 如何检测URI是否是从URI
- 12. 在zend中,如何通过ID检查会话是否存在?
- 13. 如何检查变量是否在内存中使用javascript
- 14. Zend Framework 2 - 如何使用外部库
- 15. 如何检查.dll是否是.net 2.0 Framework的一部分?
- 16. 使用Zend邮件检查邮件文件夹是否存在
- 17. Zend Framework内存使用与ZfDebug
- 18. 检查内存是否低
- 19. zend表单如何检查是否存在选择
- 20. 如何使用Robot Framework检查'Result'对象中是否存在子字符串?
- 21. 如何使用Robot Framework检查数据库中是否存在表
- 22. 如何使用PyOpenCL检查GPU内存是否可用
- 23. Zend Framework - DisplayGroup内部的DisplayGroup
- 24. 试图检查内部存储器中是否存在文件
- 25. 检查共享内存是否存在,以及是否存在共享内存
- 26. Zend Framework在内存中缓存
- 27. 检查小部件是否存在(Tkinter)
- 28. 检查DIV内是否存在元素
- 29. 如何检查内存是否使用malloc或新分配
- 30. 如何使用jQuery检查元素ID是否存在如果是外部源?