阅读 216

Zend Framework 1.12中让action响应指定的提交方式

在ASP.NET MVC中,可以通过[HttpPost]或者[HttpGet]标签使得Action方法只响应指定的提交方式。

在Zend Framework中没有这种标签方式,因此实现方式有点不同。

在ZF中,所有的Controller都有preDispatch方法,该方法在action方法调用前被调用,因此可以在这个方法上做文章。

在这个方法中判断所进来的请求是get还是post,并且指定哪些action可以接受post方法,哪些可以接受get方法,即可实现。

示例代码如下:

public function preDispatch(){if($this->_request->isPost())//如果是post动作{
   //如果请求的action不在提供的列表中,则退出程序。
   if (false==in_array($this->getRequest()->getActionName(), array('onlypost'))) {
       exit('The action cannot be called by post');
   }}
        if($this->_request->isGet())//如果是Get动作{
   //如果请求的action不在提供的列表中,则退出程序。
   if (false==in_array($this->getRequest()->getActionName(), array('onlyget'))) {
       exit('The action cannot be called by Get');
   }}
    }

这里需要提起一下,在PHP框架 Zend Framework 1.12中,Zend_Controller_Request_Http被用来访问整个HTTP请求环境。 因此,当你在action方法中,使用$this->getRequest(),其得到的对象本质类型是Zend_Controller_Request_Http,而不是简单的Zend_Controller_Request_Abstract,事实上,抽象类也不能实例化。Zend_Controller_Request_Abstract中并没有isPost()方法,而它的子类Zend_Controller_Request_Http中提供了该方法。

©著作权归作者所有:来自51CTO博客作者cnn237111的原创作品,如需转载,请注明出处,否则将追究法律责任


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐