【发布时间】:2012-03-16 16:14:14
【问题描述】:
我已经为此苦苦挣扎了几天,无法想出答案。我需要在初次提交后更改表单值。将使用提交的值之一从外部 Web 服务检索该值。用于搜索的值是一个人员 ID,它通过 Web 服务进行验证,以确保它是一个有效的 ID。使用此信息,Web 服务会返回全名,我需要将其显示在表单中,以便用户确定它是预期的人,此全名也与其他值一起保存。
我已经看到了这种方法,并且可以通过以下操作更改表单值: http://www.thenameiskhan.com/binding-changed-form-values-symfony
$values = $request->getParameter($form->getName());
$values['yourdate'] = NEW MODIFIED DATE VALUE;
$form->bind($values, $request->getFiles($form->getName()));
但我正在尝试通过 sf ValidatorCallback 函数中的表单类来完成此操作,该函数正在验证提供的 id 并检索全名..
public function validate_requester_id($validator, $values){
.....
$webserviceanswer = CALLWEBSERVICE($values['person_id'])
if ($webserviceanswer['code'] == VALID){
$values['person_fullname'] = $webserviceanswer['fullname'];
}
if( notvalid or first submit){
...// so as to display fullname to user.....
throw new sfValidatorError($validator, 'blablabla')
...
}
}
但是当返回表单时,分配给 $values['person_fullname'] 的值不会改变
稍后我还会在 requester_id 的 onchange 事件之后通过 ajax 调用 web 服务来更新 fullname 值。但希望后备的 nonajax 版本首先工作。
谢谢。
伊万
【问题讨论】:
-
回调结束时是否有
return $values;声明?
标签: validation symfony1 callback symfony-forms