带查询字段不能为空
问题描述:
如何在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!'
)),
)
));
谢谢
答
打电话时(这是一个使用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
]);
}
}
答
您可以使用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;
更新我的代码,它不工作 – phpmeter
@jlacsonph你可以发布你如何实现我上面写的? – martin
嗨再次检查我的更新代码,谢谢 – phpmeter