我正在尝试为我的表单实现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被调用的两个必填字段。
答案 0 :(得分:1)
我认为你调用setValidationGroup
的方式是错误的Sam,它是一种表单方法,你给它一个字段名称数组
if($request->isXmlHttpRequest()) {
$form->setValidationGroup(array(
'name',
));
}
答案 1 :(得分:1)
解决方案:
学会正确设置inputFilters。我不知道为什么我没有得到任何解析错误,但是在获取正确的inputFilters时出现了字符串错误,所以实际上根本没有连接inputFilter。
由于Form具有有效的默认数据,因此仅在验证单个元素时才会出现错误。
<强>本质强>:
开始编写单元测试....