0

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

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

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

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

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

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

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

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

4

1 回答 1

2

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

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

于 2012-11-03T18:48:58.387 回答