9

私はBaseEntityクラスを持っています:

class BaseEntity
{
    /**
     * The name.
     *
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255, unique=true, nullable=false)
     * @Assert\Length(min=2, max=255, minMessage="default.name.short", maxMessage="default.name.long")
     * @Assert\NotBlank(message = "default.name.not_blank")
     */
    private $name;
}

class UserEntity extends BaseEntity
{
    /**
     * {@inheritDoc}
     *
     * @Assert\Length(min=2, max=255, minMessage="user.name.short", maxMessage="default.name.long")
     * @Assert\NotBlank(message = "user.name.not_blank")
     */
    private $name;
}

ここで、長い名前または短い名前のフォームに新しいものを投稿すると、UserEntitySymfony は 2 つのエラーを返します: (for long:)

  • default.name.long
  • ユーザー名.ロング

しかし、エラーを 1 つだけ表示したいので、: - user.name.long

例: をオーバーライドしたいが、別のものを追加しない

4

3 に答える 3

0

アノテーションではなく YAML ファイルを介して少なくともいくつかの検証ルールを設定することに満足している場合は、クラス ファイル自体を編集する必要なく、基本クラスの検証設定をオーバーライドできます。

YAML ファイルは次のようになり、src/YourApp/YourBundle/Resources/config/validation.yml自動的に取得されるような場所にある必要があります。

BaseEntity:
    properties:
        name:
            - NotBlank:
                message: user.name.not_blank
            - Length:
                min: 2
                minMessage: user.name.short
                max: 255
                maxMessage: default.name.long

検証ファイルを標準以外の場所に配置する場合は、https://stackoverflow.com/a/24210501/328817を参照してください。

于 2015-03-31T08:12:02.740 に答える