Symfony4验证具有映射的错误表单字段的表单

时间:2019-05-20 13:17:19

标签: symfony symfony4

我有一个 public void Render(bool resizeToo = false) { if (resizeToo) { plt.settings.Resize(pb.Width, pb.Height); if (plt2 != null) { plt2.settings.Resize(plt.settings.width, plt.settings.height); } } if (plt2 == null) { pb.Image = plt.figure.GetBitmap(); } else { // if plt2 contains a GraphControl, match its X axis to the user control then overlay it plt2.settings.axisX.Set(plt.settings.axisX.x1, plt.settings.axisX.x2); Bitmap bmp1 = plt.figure.GetBitmap(); Bitmap bmp2 = plt2.figure.GetBitmap(); Bitmap bmpMerged = new Bitmap(bmp1); using (Graphics gfx = Graphics.FromImage(bmpMerged)) gfx.DrawImage(bmp2, new Rectangle(0, 0, bmp2.Width, bmp2.Height)); pb.Image = bmpMerged; } Application.DoEvents(); } 实体。
我创建了一个搜索表单来显示记录,其中age <ageMin <age
因此,我添加了非映射表单字段ageMaxageMin

ageMax

我想检查用户输入的min是否大于max(非常简单的要求!)。

我尝试了Symfony validate form with mapped false form fields,但这是针对symfony 2的,所需的组件对我来说很混乱。

我也找到了这些帮助页面: https://symfony.com/doc/current/form/without_class.html#form-option-constraints并尝试:

$builder
    ->add('ageMin', IntegerType::class, [
        'mapped' => false,
        'required' => false
    ])
    ->add('ageMax', IntegerType::class, [
        'mapped' => false,
        'required' => false
    ])
;

没有错误,但是没有用。

其他页面: https://symfony.com/doc/current/validation/raw_values.html

1 个答案:

答案 0 :(得分:0)

如果存在一个实体,其属性为age,则可以将LessThan使用ageMin,将GreaterThan使用ageMax将这些值与{{1 }}。

age

请注意正确导入约束。

编辑:

以上示例假定表单使用具有属性$builder ->add('ageMin', IntegerType::class, [ 'mapped' => false, 'required' => false, 'constraints' => [new LessThan(['propertyPath' => 'age'])] ]) ->add('ageMax', IntegerType::class, [ 'mapped' => false, 'required' => false, 'constraints' => [new GreaterThan(['propertyPath' => 'age'])] ]) ; 的实体。如果实体类的名称为age,则方法Foo如下所示:

configureOptions