Symfony2表单输入数字范围


Symfony2 form entering number range

使用Symfony2的表单构建器的最佳方式是什么?用户可以输入从第一个到最后一个的2个数字。例如,用户希望输入2到5的机架号,控制器必须输入数据库中的机架号2、3、4和5。如果输入5-9,则数据库输入5、6、7、8、9,依此类推。

然而,数据库只有一个列'Rack',所以我不知道在识别每个字段时使用哪个名称…

会是这样吗?

$builder
        ->add('rackno', 'integer', array(
                'label' => 'Rack: '
            )) // first rack #
        ->add('rackno', 'integer', array(
                'label' => 'To: '
            )) // last rack #
        ->add('Submit', 'submit');

你可以添加

'mapped' => false 

,并将其名称设置为rackno_fromrackno_to,这样它们的值就不会被赋给$object->rackno字段

,然后在提交表单之后,您可以对这些值做任何您想做的事情,并在保存对象之后执行您想要的插入操作。所以你会有:

$builder
        ->add('rackno_from', 'integer', array(
                'label' => 'Rack: ',
                'mapped' => false
            )) // first rack #
        ->add('rackno_to', 'integer', array(
                'label' => 'To: ',
                'mapped' => false
            )) // last rack #
        ->add('Submit', 'submit');

然后在你提交表单后

if($form->isValid())
{
// get the rackno_from and rackno_to from form and do what you need with those values
}