1

我正在尝试为我的表单实现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 插件一起使用的特定响应。

当前错误:所有 FormFields 都已验证。isEmpty对于调用 -Validator的两个必填字段,我收到一条错误消息。

4

2 回答 2

1

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

if($request->isXmlHttpRequest()) {
    $form->setValidationGroup(array(
        'name',
    ));
}
于 2013-06-05T09:47:17.180 回答
1

解决方案是

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

由于表单具有有效的默认数据,因此仅在验证单个元素时发生错误。

精华

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

于 2013-06-05T11:12:54.560 回答