すべての 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 応答オブジェクトを作成する- 良い方法ですが、それでもコードが多すぎます。