Zend Framework 2 - 控制器动作返回json

时间:2015-12-16 20:08:09

标签: zend-framework zend-framework2

我通过ajax提交表单,如果有错误则返回json。但是,当动作返回json模型出现此错误时:

  

状态不一致;子视图模型标记为终端

这是我的行动:

$viewModel = new ViewModel();
$form = $sm->get('FormElementManager')->get('MyForm');

if ($request->isPost() && $request->isXmlHttpRequest()) {
     $viewModel->setTerminal(true);
     $jsonModel = new JsonModel();

     try {
           if ($sm->get('MyService')->myFunction($form, $request->getPost())) {
               return $jsonModel->setVariables(array('var' => 'var1'));
           }
     } catch (\Exception $e) {
           return $jsonModel->setVariables(
                   array('errorMessage' => $e->getMessage())
           );
     }
}

return $viewModel->setVariables(array('form' => $form));

那是my module.config.php

'view_manager' => array(
   .....
   'strategies' => array(
       'ViewJsonStrategy',
   ),
)

1 个答案:

答案 0 :(得分:0)

您不应该返回$viewModel而是$jsonModel

顺便设置JsonModel as terminal by default

您应该将return $jsonModel添加到if子句中。