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