【问题标题】:symfony - change form values in form callbackvalidatorsymfony - 在表单回调验证器中更改表单值
【发布时间】: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


【解决方案1】:

好的..找到答案...需要在回调验证器中使用 taintedValues..在抛出错误之前..

public function validate_requester_id($validator, $values){
  ...
  $this->taintedValues['fieldname'] = NEW VALUE
  ... 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    相关资源
    最近更新 更多