Php symfony2选择表格有效
我有一个简单的smyfony2表单,其中有一个choices元素。当我选择“煤油”或“柴油”时,表格将不会生效,什么是正确的。当我不选择这三个选项中的任何一个并提交空表单时,$form->validate()将返回true,但它不应该返回true。有什么想法吗?使用HTML5对我来说不是一个解决方案 这是我的表单类型:Php symfony2选择表格有效,php,forms,validation,symfony,Php,Forms,Validation,Symfony,我有一个简单的smyfony2表单,其中有一个choices元素。当我选择“煤油”或“柴油”时,表格将不会生效,什么是正确的。当我不选择这三个选项中的任何一个并提交空表单时,$form->validate()将返回true,但它不应该返回true。有什么想法吗?使用HTML5对我来说不是一个解决方案 这是我的表单类型: public function buildForm(FormBuilderInterface $builder, array $options) { // Form e
public function buildForm(FormBuilderInterface $builder, array $options)
{
// Form erzeugen
$builder->add('treibstoff', 'choice', array(
'choices' => array(
'kerosin' => 'form.quiz1.kerosin',
'benzin' => 'form.quiz1.benzin',
'diesel' => 'form.quiz1.diesel',
),
'multiple' => false,
'expanded' => true,
'label' => ' '
))
->getForm();
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
// Validierung erzeugen
$collectionConstraint = new Collection(array(
'treibstoff' => array(
new Choice(array(
'choices' => array('benzin'),
'message' => 'form.quiz.falscheantwort',
'strict' => true
)
)
)
));
$resolver->setDefaults(array(
'validation_constraint' => $collectionConstraint
));
}
public function getName()
{
...
验证工作如下:
if($Request->getMethod() == "POST") {
$form->bind($Request);
if($form->isValid()) {
echo "valid";
提前谢谢
编辑:
我更改了setDefaultOptions,如建议和添加NotBlank。这对我来说是可行的:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
// Validierung erzeugen
$collectionConstraint = new Collection(array(
'treibstoff' => array(
new Choice(array(
'choices' => array('benzin'),
'message' => 'form.quiz.falscheantwort',
'strict' => true,
)
),
new NotBlank()
)
));
$resolver->setDefaults(array(
'validation_constraint' => $collectionConstraint
));
}
在
setDefaultOptions
中,您仅将有效选项设置为benzin
,但未按要求指定字段。请注意,表单字段中的必需仅设置:
还请注意,将所需选项设置为true不会导致
要应用的服务器端验证。换句话说,如果用户
提交字段的空白值(使用旧浏览器或web
例如,服务),除非您
使用Symfony的NotBlank或NotNull验证约束
因此,您还必须向treibstoff
字段添加约束