2013-10-12 90 views
0

我有一個操作方法,只有在向其發佈數據時纔會觸發。 所以我添加了一些邏輯代碼來防止獲取請求。在Zend Framework 1.12中,如何避免獲取操作?

public function myAction() 
{ 
     if($_SERVER['REQUEST_METHOD'] == "GET") 
     { 
      echo "No get!"; 
      die(); 
     } 
     else 
     { 
      //some other codes 
     } 
} 

它的工作原理。 但我必須將這些代碼片段寫入許多操作方法。它看起來如此多餘。

那麼,有沒有更好的方式來實現它像上面的代碼?

+0

你可以將其稱之爲對每一個動作你的佈局文件添加你的代碼,你可以檢查你的病情,也可以通過一些數據一起,如果你喜歡。 –

+0

某些操作只需要發佈請求,有些需要獲取請求。因此,我認爲不能在佈局文件中進行操作。 –

回答

1

此方法添加到您的控制器

public function preDispatch(){ 
    if(!$this->_request->isPost() and in_array($this->_request->getParam('action'), array('action1', 'action2'))){ 
     exit('only post'); 
    } 
} 
1

爲時已晚,現在來回答這個問題,但希望這將幫助別人。

如果您只想爲一個控制器執行此操作,那麼您最好使用控制器_init()方法,如下所示。

public function _init() { 
    if(!$this->getRequest()->isPost()){ 
     //The request is not post. Do what you like. 
    } 
} 

如果你想爲多個控制器做同樣的事情,你可以像這樣創建一個frontController插件。

class Application_Plugin_Request extends Zend_Controller_Plugin_Abstract { 
    public function preDispatch(Zend_Controller_Request_Abstract $request){ 
     if(!$request->$isPost()){ 
       //The request is not post. Do what you like. 
      } 
    } 
} 

將此方法添加到Bootstrap類以激活插件。

protected function _initPlugins(){ 
     $front = Zend_Controller_Front::getInstance(); 
     $front->registerPlugin(new Application_Plugin_Request(), 17); 
} 
相關問題