2012-09-12 33 views
1

我想要將所有JSON響應標準化(類似於Standardised JSON response from views)。 這裏是JSON響應例如Zend Framework的自定義標準化JSON響應

{ 
    "status" : "failure", 
    "errors" : { 
     "name" : [ "Error text 1", "Error text 2" ], 
     "email" : [ "Email error text" ] 
    } 
} 

這裏是類實現我的standartised JSON響應

class JsonResponse 
{ 

    protected $_errors = array(); 

    public function addError($key, $value) { 
     $this->_errors[$key][] = $value; 
     return $this; 
    } 

    public function setFormErrors(Zend_Form_Abstract $form) { 
     $this->_errors = $form->getErrors(); 
     return $this; 
    } 

    public function __toArray() { 
     if (!empty($this->errors)) { 
      return array(
       'status' => 'fail', 
       'errors' => $errors, 
      ); 
     } 
     return array(
      'status' => 'success',    
     ); 
    } 

    public function __toString() { 
     return json_encode($this->__toArray()); 
    } 

} 

一切都很好,但使用這個類是在屁股真正的痛苦。

class App_Controller extends Zend_Action_Controller 
{ 

    public function submitAction() 
    { 
     $form = new App_Form(); 
     $form->isValid($this->getRequest()->getPost()); 

     //disabling displaying layout 
     $this->_helper->layout()->disableLayout(); 
     $this->_helper->viewRenderer->setNoRender(true); 

     $response = new JsonResponse(); 
     $response->setFormErrors($form); 

     echo $response;  
    } 

} 

我是Zend Framework中真正的noob。 什麼是包裝JsonResponse的最佳方式?

  • 幫手
  • 延長Zend_Controller_Response_Abstract
  • 新的上下文切換
  • Form

什麼是最好的方法實現?

Creating a custom JSON response object with Zend Action Helper ContextSwitch - 這樣做的好方法,但仍然需要太多的代碼,恕我直言。

回答

0

IMO您應該使用上下文切換(JSON或您自己的)並使用您的首選方式來格式化您的響應數據結構。

看起來你似乎正在實施ajax表單驗證不是嗎?也許你應該看看這個:Zend form ajax validation on submit(並詢問谷歌有關processAjax()