-1

ユーザーの登録フォームで、ユーザー名に一意の制約を使用しました。

ユーザーエンティティには次のコードがあります

/*

* @UniqueEntity(fields="username",message="Username is already in use")
*/

class users

{

    /**
     * @var string
     * @Assert\NotBlank(message="username should not be blank")
     * @ORM\Column(name="username", type="string", length=40)
     *
     */
    private $username;

    /**
     * @var string
     * @Assert\NotBlank(message="password should not be blank")
     * @ORM\Column(name="password", type="string", length=40)
     */
    private $password;
}

登録については、ログイン時にこのエンティティですべてがうまくいき、ユーザー名が既に使用されているというエラーが表示されます。登録フォームの一意性のみが適用されるように、コントローラー内、つまりフォーム内に一意の制約を保持できますか。

4

1 に答える 1

0

検証グループを使用します。

http://symfony.com/doc/2.1/book/validation.html#validation-groups

(リンクをたどると、非常によく似たケースが表示されます:ユーザーと登録)

編集

ユーザーエンティティに「user_type」フィールドがあると仮定します(たとえば、可能な値は「normal_user」と「affiliate」です)。その場合は、これら 2 つのフィールドの組み合わせを一意として指定するだけです。このような:

@UniqueEntity(fields={"username", "user_type"},message="Username is already in use") */
于 2013-05-31T08:36:23.697 に答える