我想要标准化所有 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 框架中的真正菜鸟。将JsonResponse包装到的最佳方法是什么?
- 帮手
- 延长
Zend_Controller_Response_Abstract
- 新的上下文切换
- 实施于
Form
最好的方法是什么?
使用 Zend Action Helper ContextSwitch 创建自定义 JSON 响应对象- 这样做的好方法,但仍然需要太多代码,恕我直言。