Предлагаемый способ - использовать встроенную форму, но я вижу, что это не может быть полезным для вас (учитывая, что входные данные формы добавляются через Javascript).
Одно решение, которое я предлагаю (хотя и стремлюсьПосмотрите, как другие люди решат это), чтобы удалить поле email
из схемы виджета и только добавить его в вашу схему проверки (с пользовательским обратным вызовом).
Не проверено, но что-то вроде руководства.
class YourForm extends sfForm {
public function configure() {
$this->setValidators(array(
'email' => new sfValidatorCallback(array(
'callback' => array($this, 'my_email_validator')
))
));
}
public function my_email_validator($validator, $value) {
$email_validator = new sfValidatorEmail();
try {
foreach($value as $email) { // multiple fields with the same name
$email_validator->clean($email); // throws exception when not valid
}
}
catch(sfValidatorError $e) {
// $email is invalid - notify user or whatever
// you could also rethrow a sfValidatorError so that the form->isValid
// would return false
}
}
}
И в вашем шаблоне будет поле (вручную да).
<input type="text" name="email[]" />
<input type="text" name="email[]" />
<input type="text" name="email[]" />
<input type="text" name="email[]" />
Я все еще хотел быпосмотри на предложения других, потому что это мне тоже кажется хакерским.