2013-11-27 9 views
5

Ich habe ein eingebettetes Formular mit den Optionen compound und inherit_data auf true festgelegt.Symfony2 zusammengesetzte Form, assoziiere Fehler mit Feldern

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->setErrorBubbling(false); 

    $builder->add('date_start', 'date', array(
     'label'    => 'form.date_start.label', 
     'widget'   => 'single_text', 
     'required'   => false, 
     'group'    => ['event', 'dates'] 
    )); 

    $builder->add('date_end', 'date', array(
     'label'    => 'form.date_end.label', 
     'widget'   => 'single_text', 
     'required'   => false, 
     'group'    => ['event', 'dates'] 
    )); 

    $builder->add('time_zone', 'alternate_timezone', [ 
     'label'    => 'form.timezone.label', 
     'field_help'  => 'form.timezone.help', 
     'empty_value'  => 'form.timezone.empty_value', 
     'required'   => false, 
     'group'    => ['event', 'dates'] 
    ]); 
} 

/** 
* {@inheritdoc} 
*/ 
public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults([ 
     'label'  => false, 
     'compound'  => true, 
     'inherit_data' => true 
    ]); 
} 

Ich kann meinen Feldern keine Fehler zuordnen. Die Fehler dieses Formulars werden auf dem Formular des übergeordneten Elements und nicht auf dem Feld angezeigt. Ich sah im Doc, error_bubbling kann falsch sein, es sei denn, das Formular ist zusammengesetzt.

Was ist die Lösung mit einer Verbundform, um Fehler mit dem Feld zu haben?

Danke

+0

Ich habe dieses Problem mit einem Feld in meiner Form, die vererbt wird. Ich kann den Namen des geerbten Formulars nicht in meinen Validierungsroutinen angeben. Der Fehler blubbert immer bis zur Root-Form. Es hat sich bei mir nichts geändert, wenn sich das error_bubbling oder andere Einstellungen geändert haben. – lifo

Antwort

-1

Mit Verbindung Formen in Symfony - Sie Validierungs Constraints für jede Entität in der Verbindung Beziehung definieren können und jegliche Fehler, die während der Gültigkeitsprüfung erzeugt werden, werden über/in der Nähe der Formelemente, wo der Fehler aufgetreten ist angezeigt.

Zum Beispiel - wenn das von Ihnen gepostete Formularbeispiel an die Entität "ExampleEntity" gebunden ist, können Sie Ihre Validierungsbeschränkungen für diese Entität in der validation.yml Ihres Pakets definieren. Alle Überprüfungsfehler werden neben dem jeweiligen untergeordneten Formular angezeigt - auch in Sammlungen, bei denen Validierungsfehler bei mehreren untergeordneten Formularen auftreten können.

Beispiel src/MyBundle/Ressourcen/Config/validation.yml

App\MyBundle\Entity\ExampleEntity: 
     properties: 
      date_start: 
       - NotBlank: 
        message: Date start cannot be blank. 
      date_end: 
       - NotBlank: 
        message: Date end field cannot be blank. 
      time_zone: 
       - NotBlank: 
        message: Timezone cannot be blank. 
Verwandte Themen