2013-08-11 12 views
9

aggiungo un campo non mappato ad un tipo di modulo Symfony2:casella di controllo Convalida non mappata a un'entità in una forma Symfony2

$builder->add('terms','checkbox', array('mapped' => false, 
     'constraints' => array(new NotBlank()))); 

Ma la NotBlank() vincolo non funziona! Solo se cambio il tipo da 'checkbox' a 'text' funziona come previsto. Quindi, come posso convalidare una casella? Naturalmente ho provato anche con i vincoli "True()", "EqualTo()" e "Length (...)". Ma senza successo. Ho anche provato diversi valori POST (1/0, vero/falso, on/off ...) per il campo.

Qual è la grande differenza tra un campo checkbox e un campo di testo relativo alla convalida del campo modulo in symfony2?

Grazie Stef

+0

Per ottenere gli occhi sulla vostra domanda, si dovrebbe contrassegnare con il tag più popolare che è rilevante per la tua domanda - in questo caso, vorrei raccomandare sostituendo uno dei tuoi tag, come il tag 'constraints' con 'PHP'. – Brionius

risposta

12

NotBlank convalida stringa da non essere vuota. Prova a usare NotNull

True deve anche funzionare.

Convalida che un valore è true. In particolare, questo controlla se il valore è esattamente vero, esattamente il numero intero 1 o esattamente la stringa "1". Questo vincolo può essere applicato alle proprietà (ad esempio una proprietà termsAccepted su un modello di registrazione).

+0

Grazie. Funziona ora. – kieste

+1

[True] (http://symfony.com/doc/current/reference/constraints/True.html) funziona per convalidare la casella di controllo, grazie. –

8

risposta aggiornata per Symfony 3.0:

use Symfony\Component\Form\Extension\Core\Type\CheckboxType; 
use Symfony\Component\Validator\Constraints\IsTrue; 

// ... 
{ 
    $builder->add('terms', CheckboxType::class, array('constraints'=>new IsTrue(array('message'=>'Needs to be clicked'))); 
} 
Problemi correlati