1

すべての JSON 応答を標準化したい (ビューからの標準化された JSON 応答のようなもの)。JSON 応答の例を次に示します。

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

そして、これが私の標準化された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 の初心者です。JsonResponseをラップする最良の方法は何ですか?

  • ヘルパー
  • 拡張するZend_Controller_Response_Abstract
  • 新しいコンテキスト スイッチ
  • 実装するForm

最善のアプローチは何ですか?

Zend Action Helper ContextSwitch を使用してカスタム JSON 応答オブジェクトを作成する- 良い方法ですが、それでもコードが多すぎます。

4

1 に答える 1

0

IMO コンテキスト スイッチ (JSONまたは独自のもの) を使用し、好みの方法で応答データ構造をフォーマットする必要があります。

ajaxフォームバリデーションを実装しているようですね。たぶん、あなたはこれを見なければなりません: Zend form ajax validation on submit (そして google に質問してくださいprocessAjax())

于 2012-10-02T02:16:49.213 に答える