2016-11-09 108 views
0

如何在symfony2 PostType類中添加驗證約束「Field is required」?有什麼建議麼?我是SF2的新手,我只是編輯以前的開發人員所做的工作。帶查詢字段不能爲空

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!' 
      )), 
     ) 
    )); 

謝謝

回答

0

打電話時(這是一個使用BlogPostType形式的類型)你應該設置required => true這種類型從父窗體:

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

此外,您可以設置required = true默認爲BlogPostType

class BlogPostType extends AbstractType 
{ 
    // ... 

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

更新我的代碼,它不工作 – phpmeter

+0

@jlacsonph你可以發佈你如何實現我上面寫的? – martin

+0

嗨再次檢查我的更新代碼,謝謝 – phpmeter

1

您可以使用constraints鑰匙。就像這樣:

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!' 
       )), 
      ) 
     )) 
    ; 
} 

不要忘記加上用途:

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

我更新了我的源代碼,但它不起作用 – phpmeter

+0

您錯誤使用''constraints'=> new NotBlank'。約束鍵必須是一個數組。仔細看我的例子 –

+0

再次檢查我的更新代碼,謝謝 – phpmeter