我在Symfony2中有一个表单,其中管理员必须编写另一个用户的用户名。
如果我的数据库中存在用户名,是否可以在发送表单之前进行检查?我用的是学说。
谢谢!
答案 0 :(得分:1)
您可以编写自定义约束,该约束将与您的实体管理器一起注入,并检查用户名是否存在。 See the documentation for creating a custom constraint here。
另一个选项是write a data transformer将用户名字符串转换为User对象,这应该确保用户存在如果不存在则抛出TransformationFailedException。这可能会更容易一些,因为文档中的示例已经将转换器创建为服务,并向您展示如何注入实体管理器。
此外,根据您在应用中的用户数量,您可以将用户名选项设为entity
choice type,并允许symfony创建一个下拉列表,其中已包含所有用户。
编辑: 抱歉,我错过了关于在提交表单之前检查的部分。上面的想法仍然是你可以在服务器上实现的方式,但对于前两个选项,你需要使用Ajax请求来测试用户名是否有效。