2016-11-09 8 views
0

Wie füge ich Validierungsbeschränkungen hinzu "Feld ist erforderlich" in Symfony2 PostType-Klasse? Irgendwelche Vorschläge? Ich bin neu in SF2 und ich bearbeite nur, was von früheren Entwicklern gemacht wurde.Feld mit Abfrage sollte nicht leer sein

use Symfony\Component\Validator\Constraints\NotBlank; 

class BlogPostType extends AbstractType 
    { 
     public function buildForm(FormBuilderInterface $builder, array $options) 
     { 

     $blogPostCategories = BlogPostCategoryQuery::create() 
      ->filterByBlogPost($builder->getData()) 
      ->find(); 

     $categoryIds = array(); 
     foreach ($blogPostCategories as $blogPostCategory) { 
      $categoryIds[] = $blogPostCategory->getCategory()->getId(); 
     } 

     $queryOptions = array(
      'option_status' => Categorypeer::STATUS_ACTIVE, 
      'option_category_ids' => $categoryIds 
     ); 

     $categories = CategoryQuery::create() 
      ->filterActiveCategoriesByOptions($queryOptions) 
      ->find(); 


       $builder->add('category_ids', 'model', array(
     'label' => 'Category', 
     'mapped' => false, 
     'class' => 'Deal\MainBundle\Model\Category', 
     'query' => CategoryQuery::create() 
      ->filterActiveCategoriesByOptions() 
      ->orderByName(), 
     'property' => 'name', 
     'empty_value' => 'Select categories', 
     'empty_data' => null, 
     'required' => true, 
     'multiple' => true, 
     'data' => $categories, 
     'constraints' => array(
      new NotBlank(array(
       'message' => 'Your message can not be blank! Ouch!' 
      )), 
     ) 
    )); 

Danke

Antwort

0

Sie sollten required => true für diese Art von der Mutterform gesetzt, wenn (das ist die Form, Art, die Ihre BlogPostType verwendet) Aufruf:

$formBuilder->add('whatever', BlogPostType::class, ['required' => true]); 

Auch Sie required = true einstellen könnte standardmäßig für BlogPostType:

class BlogPostType extends AbstractType 
{ 
    // ... 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([ 
      'required' => true 
     ]); 
    } 
} 
+0

ich meinen Code aktualisieren und es tut – phpmeter

+0

@jlacsonph arbeiten Können Sie nach, wie Sie das umgesetzt, was ich oben geschrieben habe? – martin

+0

Hallo, überprüfe meinen aktualisierten Code nochmal, danke – phpmeter

1

Sie können es mit constraints Schlüssel tun. Wie folgt aus:

public function buildForm(FormBuilderInterface $builder, array $options) { 
    $builder 
     ->add('message', TextareaType::class, array(
      'required'  => true, 
      'constraints' => array(
       new NotBlank(array(
        'message' => 'Your message can not be blank! Ouch!' 
       )), 
      ) 
     )) 
    ; 
} 

vergessen Sie nicht, Anwendungen hinzuzufügen:

use Symfony\Component\Validator\Constraints\NotBlank; 
+0

Ich aktualisiere meinen Quellcode und es funktioniert nicht – phpmeter

+0

Sie falsch mit ''Einschränkungen' => neue NotBlank'. Constraints Key muss ein Array sein. Schauen Sie in meinem Beispiel sorgfältig –

+0

überprüfen Sie meinen aktualisierten Code erneut, danke – phpmeter

Verwandte Themen