【问题标题】:Best way to validate entity by unique key in symfony2在 symfony2 中通过唯一键验证实体的最佳方法
【发布时间】:2012-11-03 18:22:10
【问题描述】:

我正在尝试构建一个表单来收集有关游戏中新玩家的信息。

要开始游戏,需要提供昵称、电子邮件和代码。

代码存储在另一个与玩家表连接的表中,一对一关系

在验证期间我需要做的是检查提供的令牌是否存在,如果存在则将 Player id 存储在 Code 记录中。

为此,我正在尝试构建一个表单:

class PlayerType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('code','text')
        ->add('email', 'email') 
        ->add('nick', 'text')
    ;
}
...
}

但在验证期间(或可能在创建代码实例期间)以这种方式

Argument 1 passed to Player::setCode() must be an instance of Code, string given

这很明显,因为已经提供了字符串。

如何在表单验证期间执行查找并且传递的不是令牌字符串而是令牌实例?

【问题讨论】:

    标签: symfony symfony-forms


    【解决方案1】:

    查看data transformers。这将允许您创建一个带有标量类型字段的表单,当在表单提交上填充模型时,该字段会转换为实体。

    关于验证,您需要创建一个custom validation constraint 来检查给定代码是否存在于数据库中。

    【讨论】:

    • 非常酷,而且非常有意义,但该示例似乎不起作用:我得到选项“em”不存在。已知选项有:“attr”、“block_name”、...有什么想法吗?
    猜你喜欢
    • 2012-07-31
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多