2016-06-02 9 views
0

In Symfony2.7 habe ich ein Formular mit vier numerischen Feldern. Bei der Vorlage, wie kann ich bestätigen separat unter folgenden zwei Situationen:Symfony2 Form Validierung der entsprechenden Felder

1) Summe dieser vier Werte sollten nicht mehr als 100 Oder 2) insgesamt drei letzten Feldwerte sollten auf den Wert des ersten Feldes gleich .

Dank

+0

zeigen Sie uns Ihren Code – ghazi2008

Antwort

0

Wenn dies eine Situation, in der Anwendung einmalig ist (wenn es nicht ich ist ein custom constraint dafür schreiben würde), können Sie eine schnelle Überprüfung in Ihrem Controller tun können, nachdem Sie das Formular handhaben und vor dem gültigen Scheck.

Zum Beispiel;

<?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() 
     )); 
    } 
}