Как проверить только часть формы Symfony без групп проверки?

0

У меня есть динамически сгенерированная форма с одним полем. Это поле варьируется от запроса к запросу. Мне нужно проверить это поле с помощью правильного валидатора. Я думал, что простой способ будет создавать форму с этим одним полем и проверять всю форму. Но я был неправ. Форма проверяется всей сущностью (не только одним полем).

Мне нужна форма, потому что каждое поле моего объекта может иметь собственное правило проверки (это может быть проверка электронной почты, проверка длины или проверка диапазона и т.д.). И форма поймает все эти проверки только по имени поля. Также он может преобразовать некоторые данные в соответствующий формат.

И теперь у меня есть вопрос: как я могу проверить только одно конкретное поле формы?

    $value = trim($request->get($field, '');
    $form = $this->createFormBuilder($order, array('csrf_protection' => false))
        ->add($field)
        ->getForm();
    $form->submit(array($field => $value));
    if ($form->isValid()) {
        $em->persist($order);
        $em->flush();
    }
Теги:
validation
forms

2 ответа

1
Лучший ответ

Просто понял:

Чтобы проверить только одно поле, я могу использовать не $form->isValid() но $form->get($field)->isValid():

$value = trim($request->get($field, '');
$form = $this->createFormBuilder($order, array('csrf_protection' => false))
    ->add($field)
    ->getForm();
$form->submit(array($field => $value));
if ($form->get($field)->isValid()) {
    $em->persist($order);
    $em->flush();
}
0

Вы можете использовать этот код:

$validator = $this->get('validator');
if ($validator->validateProperty($containingValue, $property)) {
    $em->persist($order);
    $em->flush();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню