在Symfony2表单中验证用户名

时间:2014-02-14 13:22:52

标签: php forms validation symfony doctrine-orm

我在Symfony2中有一个表单,其中管理员必须编写另一个用户的用户名。

如果我的数据库中存在用户名,是否可以在发送表单之前进行检查?我用的是学说。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以编写自定义约束,该约束将与您的实体管理器一起注入,并检查用户名是否存在。 See the documentation for creating a custom constraint here

另一个选项是write a data transformer将用户名字符串转换为User对象,这应该确保用户存在如果不存在则抛出TransformationFailedException。这可能会更容易一些,因为文档中的示例已经将转换器创建为服务,并向您展示如何注入实体管理器。

此外,根据您在应用中的用户数量,您可以将用户名选项设为entity choice type,并允许symfony创建一个下拉列表,其中已包含所有用户。

编辑: 抱歉,我错过了关于在提交表单之前检查的部分。上面的想法仍然是你可以在服务器上实现的方式,但对于前两个选项,你需要使用Ajax请求来测试用户名是否有效。