2016-11-09 105 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