Если это разовый ситуация в приложении (если это не я бы написал custom constraint для этого), вы можете сделать быструю проверку в контроллере после обработки формы и перед действительной проверкой.
Например,
<?php
namespace Acme\Bundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Form\FormError;
class ArtistPhotoController extends Controller {
// ...
public function myFormAction(Request $request)
{
// create the form
$form = $this->createFormBuilder(null)
->add('number1', 'number', [
'required' => false,
]
)
->add('number2', 'number', [
'required' => false,
]
)
->add('number3', 'number', [
'required' => false,
]
)
->add('number4', 'number', [
'required' => false,
]
)
->add('submit', 'submit', ['label' => 'Check'])
->getForm();
$form->handleRequest($request);
// checky check for custom validation
if ($form->isSubmitted()) {
$number1 = $form->get('number1')->getData();
$number2 = $form->get('number2')->getData();
$number3 = $form->get('number3')->getData();
$number4 = $form->get('number4')->getData();
if (($number2+$number3+$number4) !== $number1) {
$form->get('number1')->addError(new FormError('Num1 not equal to 2+3+4'));
}
// any other rules you want to make up...
}
if ($form->isSubmitted() && $form->isValid()) {
// do whatever
}
return $this->render('MyBundle:foo:bar.html.twig', array(
'form' => $form->createView()
));
}
}
показать нам свой код – ghazi2008