单个字段的AJAX表单更新

时间:2013-06-05 09:37:14

标签: zend-framework2 zend-form

我正在尝试为我的表单实现x-editable。为此,需要找到一种在基于单一属性的基础上更新实体的方法。这给我带来的最大问题是如何验证单个数据的方式。根据我的理解,setValidationGroup()似乎不起作用(或者我完全错了)。这是我试过的:

if ($request->isPost()) {
    $form->setData($request->getPost());
    if($request->isXmlHttpRequest()) {
        $filters = $form->getInputFilter();
        $filters->setValidationGroup(
            $this->params()->fromPost('name')
        );
        $form->setInputFilter($filters);
    }
    if ($form->isValid()) {
        $objectManager->flush();
        if ($request->isXmlHttpRequest()) {
            $response = $this->getResponse();
            $response->setStatusCode(Response::STATUS_CODE_200);

            return $response;
        }
    } else {
        $errors = $form->getMessages();
        \Zend\Debug\Debug::dump($errors);
        die("notvalid");
    }
}

isXmlHttpReqiest的检查用于#1 的目的,将验证组缩小为一个元素,#2 发送特定的响应使用jQuery的x-editable插件。

当前错误:所有FormField都经过验证。我收到了一个错误消息,其中包含isEmpty - Validator被调用的两个必填字段。

2 个答案:

答案 0 :(得分:1)

我认为你调用setValidationGroup的方式是错误的Sam,它是一种表单方法,你给它一个字段名称数组

if($request->isXmlHttpRequest()) {
    $form->setValidationGroup(array(
        'name',
    ));
}

答案 1 :(得分:1)

解决方案

学会正确设置inputFilters。我不知道为什么我没有得到任何解析错误,但是在获取正确的inputFilters时出现了字符串错误,所以实际上根本没有连接inputFilter。

由于Form具有有效的默认数据,因此仅在验证单个元素时才会出现错误。

<强>本质

开始编写单元测试....