【发布时间】:2016-10-17 16:24:46
【问题描述】:
在少数情况下我需要对我的 FormType 类进行丑陋的自定义。
第一个是我需要检查user 的state 在这种情况下是否处于活动状态,禁用编辑username 的可能性。但仅添加 disabled 属性并不能保护不提交的输入。所以我决定不显示用户名输入字段。我通过选项传递布尔值来实现它。
控制器:
$userForm = $this->createForm(UserType::class, $user, array(
'is_active' => ($user->getState() == 'active')
));
然后在 UserType 类中:
if ($options['is_active']) {
$builder
->add('username', EmailType::class);
}
$builder
->add('firstName', TextType::class),
...
第二种情况是我需要在上传个人资料照片时从FileType 字段中删除NotBlank() 约束并添加'required' => false 属性。我通过选项传递布尔值以类似的方式实现它。
控制器:
$userForm = $this->createForm(UserType::class, $user, array(
'is_uploaded' => !empty($photo)
));
用户类型类:
// achieved same way as previous problem
我的问题是:
- 对于此类情况有哪些建议?
- 我所做的是否正确且可以接受?
- 是否有处理这些案例的文档或示例?
【问题讨论】:
标签: php forms symfony formbuilder