0

ゲームの新しいプレーヤーに関する情報を収集するフォームを作成しようとしています。

ゲームを開始するには、ニックネーム、電子メール、およびコードを提供する必要があります。

コードは、1 対 1 の関係でプレーヤー テーブルに接続された別のテーブルに格納されます

検証中に行う必要があるのは、提供されたトークンが存在するかどうかを確認し、存在する場合はプレイヤー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

string が提供されているため、これは明らかです。

フォームの検証中にルックアップを実行し、トークン文字列ではなくトークン インスタンスを渡すにはどうすればよいですか?

4

1 に答える 1

2

データトランスフォーマーを調べてください。これにより、フォーム送信時にモデルにデータを入力するときにエンティティに変換されるスカラー型フィールドを持つフォームを作成できます。

検証に関しては、指定されたコードがデータベースに存在するかどうかをチェックするカスタム検証制約を作成する必要があります。

于 2012-11-03T18:48:58.387 に答える