我正在构建Rest Api,并且还使用Symfony2表单来处理我的put和post请求。
我经历过我的一些邮寄或投放操作开始变得很慢。我调试并发现我的一个表单通过将“ID”转换为实体的视图表示而花费很长时间。问题在于:
$builder->add('user', 'entity', array('class' => 'StregoUserBundle:User'))
提交表单并提供值“26”时,viewtransformer将获取所有内容!用户在呈现表单时显示它们。 (选择列表)
在提供选择数组时我可以避免这种情况:
$builder->add('user', 'entity', array('class' => 'StregoUserBundle:User',
'choices' => array()
));
这对性能产生了重大影响,我开始在所有“实体”表单字段中执行此操作。问题是,是否存在完全禁用视图转换的通用解决方案?
更新 我没有解决问题,因为通过提供一个空的选择数组,我提交的值被拒绝。所以我仍然坚持禁用视图变换器的任务。
答案 0 :(得分:0)
答案 1 :(得分:0)
IMO,您最好的解决方案是提供一个表单扩展,它将覆盖实体表单类型的行为。然后在此扩展中,用您自己的实现替换默认数据转换器。
有关表单扩展名的文档:http://symfony.com/doc/current/cookbook/form/create_form_type_extension.html
如您所见,您可以覆盖buildForm
方法,然后删除所有数据转换器,并根据需要添加自己的数据转换器。