【发布时间】:2014-02-14 13:22:51
【问题描述】:
我在 Symfony2 中有一个表单,管理员必须写下另一个用户的用户名。
如果用户名存在于我的数据库中,是否可以在发送表单之前检查?我使用教义。
谢谢!
【问题讨论】:
标签: php forms validation symfony doctrine-orm
我在 Symfony2 中有一个表单,管理员必须写下另一个用户的用户名。
如果用户名存在于我的数据库中,是否可以在发送表单之前检查?我使用教义。
谢谢!
【问题讨论】:
标签: php forms validation symfony doctrine-orm
您可以编写一个自定义约束,将其注入您的实体管理器并检查用户名是否存在。 See the documentation for creating a custom constraint here。
另一个选项是write a data transformer,它将用户名字符串转换为用户对象,这应该确保用户存在,如果她没有抛出 TransformationFailedException。这可能会更容易一些,因为文档中的示例已经将转换器创建为服务,并向您展示了如何注入实体管理器。
此外,根据您的应用程序中有多少用户,您可以将用户名选项设置为entity choice type,并允许 symfony 创建一个下拉列表,其中包含您的所有用户。
编辑: 抱歉,我错过了在您提交表单之前检查的部分。上面的想法仍然是您可以在服务器上实现的方式,但是对于前两个选项,您需要使用 Ajax 请求来测试用户名是否有效。
【讨论】: