Проверка правильности формы состоит из двух частей ... первая - это добавление валидаторов, вторая - проверка ее правильности ....
возьмите этот пример:
public function executeSomeaction(sfWebRequest $request)
{
// Define the form
this->exportForm = new sfForm();
$widgets['sheet_type'] = new sfWidgetFormDoctrineChoice(array('model' => 'ExportSheet', 'add_empty' => true));
$this->exportForm->setWidgets($widgets);
$this->exportForm->setValidators(array('sheet_type' => new sfValidatorDoctrineChoice(array('model' => 'ExportSheet', 'required' => true), array('required' => 'Please select a sheet type to export.') )));
// Deal with the request
if ($request->isMethod('post'))
{
$this->exportForm->bind($request->getParameter(<your form>));
if ($this->exporForm->isValid())
{
// Handle the form submission
// ...
$this->redirect('foo/bar');
}
}
}
Это только вторая часть в if ($request->isMethod('post'))
, которая применяет вашу проверку и проверяет данные, предоставленные пользователем. См. Здесь в документации Symfony об обработке форм с проверкой
Если вы используете следующее для добавления схемы именования для вывода формы, тогда получить все результаты легко ....
$this->exportForm->getWidgetSchema()->setNameFormat('exportForm[%s]');
, тогда вы можете получить использование:
$this->exportForm->bind($request->getParameter('exportForm'));
, тогда он получит массив со всеми значениями полей в нем и свяжет его с вашей формой - готовый для проверки, чтобы увидеть,он действителен.
Обновление
необходимо указать
$this->exportForm->getWidgetSchema()->setNameFormat('exportForm[%s]');
после
$this->exportForm->setWidgets($widgets);
, так как метод setWidgets
сбрасывает формат именования