РЕДАКТИРОВАТЬ:
Что вам нужно сделать, это создать сообщение или предварительный валидатор.Это позволит вам проверить два поля одновременно для какого-то дополнительного условия.Трудно сказать, как реализовать, так как мы не знаем ваши правила проверки, но следующие документы должны помочь: http://www.symfony -project.org / more-with-symfony / 1_4 / ru / 06-Advanced-Forms # chapter_06_ignoring_embedded_forms
Это показывает, как создать postValidator и использовать его в форме.Иногда, хотя вам не нужно повторно использовать этот код, создание класса является излишним.В этом случае вы можете создать пользовательский метод в своей форме и использовать sfValidatorCallback
.. например:
class myForm {
public function configure()
{
// normal config stuff
$this->mergePostValidator(new sfValidatorCallback(array(
'callback' => array($this, 'postValidate')
)));
}
public function postValidate($validator, $values, $arguments)
{
// your post validator code
}
}
Выполнение этого способа позволит вам определять сообщения об ошибках, как обычно для другихvalidator.
processForm
не является действием, которое вы пересылаете, поэтому вызывающее его действие все еще будет пытаться отправить содержимое, а что-то не так, как обычно.Проблема в том, что sendContent
на самом деле отображает содержимое в браузере ... поэтому, когда вызывающее действие пытается отправить заголовки и содержимое снова, как ожидается, вы получите типичную ошибку уже отправленных заголовков.
Если вынужно отправить контент сразу, а затем выбросить sfStopExecutionException
после sendContent
.Но я сомневаюсь, что это то, что вы действительно хотите сделать.Вероятно, лучше всего не отправлять содержимое, а разрешить элементу управления возвращать вызывающее действие как обычно, а затем обрабатывать отправку содержимого оттуда.
Вы также можете присоединить слушателя к событию response.filter_content
, но в этой ситуации я не уверен, принесет ли это много пользы.Если вы дадите лучшее описание того, что вы пытаетесь выполнить, помимо добавления тестовой строки, мы можем дать вам более точное направление.