在表单构建器中添加一个模型转换器,强制将字符串转换为整数值。例如:
use Symfony\Component\Form\DataTransformerInterface;
class StringToIntegerTransformer implements DataTransformerInterface
{
public function transform($value)
{
return (int) $value;
}
public function reverseTransform($value)
{
return (string) $value;
}
}
$form = $this->createFormBuilder()
->add('agree', CheckboxType::class)
->getForm();
$form->get('agree')->addModelTransformer(new StringToIntegerTransformer());
这将确保提交时值被强制转换为整数,并且在加载时将值转换回字符串。这个解决方法可以确保复杂的布尔值不会导致Symfony的CheckboxType转换错误。