2016-06-02 3 views
0

В symfony2.7 у меня есть форма с четырьмя числовыми полями. На представлении, как можно проверить при следующих двух ситуаций отдельно:Symfony2 форма проверки соответствующих полей

1) сумма этих четырех значений не должно быть больше, чем 100. Или 2) Всего трех последних значений полей должно быть равно значению первого поля ,

Благодаря

+0

показать нам свой код – ghazi2008

ответ

0

Если это разовый ситуация в приложении (если это не я бы написал 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() 
     )); 
    } 
} 
Смежные вопросы