symfony - изменяет значения формы в форме callbackvalidator - PullRequest
0 голосов
/ 16 марта 2012

Я боролся с этим в течение нескольких дней и не смог придумать ответ.Мне нужно изменить значение формы после первоначальной отправки.Значение будет получено из внешнего веб-сервиса с использованием одного из представленных значений.Значение, используемое для поиска, представляет собой идентификатор человека, который проверяется веб-службой, чтобы убедиться, что это действительный идентификатор.С этой информацией веб-служба возвращает полное имя, и мне нужно отобразить его обратно в форме, чтобы пользователь был уверен, что это ожидаемый человек, это полное имя также сохраняется с другими значениями.

Iуже видел этот подход, и я могу изменить значения формы из действия с этим: 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, которая проверяет идентификаторпредоставил и получил полное имя ..

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'], не изменится

Позже я также обновлю значение полного именичерез ajax, вызывающий веб-сервис после события onchange requestter_id .., но хочу, чтобы резервная версия nonajax работала первой.

спасибо.

ivan

1 Ответ

1 голос
/ 22 марта 2012

ок .. нашел ответ ... нужно использовать taintedValues ​​в валидаторе обратного вызова .. перед выдачей ошибки ..

public function validate_requester_id($validator, $values){
  ...
  $this->taintedValues['fieldname'] = NEW VALUE
  ... 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...