我在Symfony2中有一个表单,其中管理员必须编写另一个用户的用户名。
如果用户名存在于我的数据库中,是否可以在发送表单之前进行检查?我使用教义。
谢谢!
您可以编写一个自定义约束,该约束将注入实体管理器并检查用户名是否存在。请参阅此处创建自定义约束的文档。
另一种选择是编写一个数据转换器,将用户名字符串转换为User对象,这应该确保用户存在,如果她不存在,则抛出TransformationFailedException。这可能更容易一些,因为文档中的示例已经将transformer创建为服务,并向您展示了如何注入实体管理器。
此外,根据你的应用程序中有多少用户,你可以将用户名选项设置为entity
选项类型,并允许symfony创建一个下拉列表,其中包含已经存在的所有用户。
编辑:很抱歉,我错过了在提交表单之前检查的部分。上面的想法仍然是如何在服务器上实现的,但对于前两个选项,您需要使用Ajax请求来测试用户名是否有效。