1

Yii2 ActiveForm を使用して、デフォルトのテンプレート化された登録フォームを作成しています。フォームで、ユーザーは登録を完了するためにサインアップ キーを指定する必要があります。サインアップ キーの長さは 6 ~ 10 文字にする必要があります。

問題があるものを除いて、フォームの他のすべての検証ルールを削除しました。ルールは適用されていますが、デフォルトのフォーム検証メッセージをレンダリングしています。

問題のルールは次のとおりです。

[ 
    'betaKey',
    'string',
    'length' => [6, 10],
    'message' => 'Signup Codes are between 6 and 10 characters.' 
]

上記のルールが適用されています。これは、長さを変更する[2, 10]とルールがトリガーされなくなるためです。ドキュメントを読みましたが、何か見落としがあれば遠慮なくお知らせください。

Yii によってレンダリングされる JavaScript は次のとおりです。

yii.validation.string(value, messages, {
    "message": "Signup Codes are between 6 and 10 characters.",
    "min": 2,
    "tooShort": "Beta Key should contain at least 2 characters.",
    "max": 10,
    "tooLong": "Beta Key should contain at most 10 characters.",
    "skipOnEmpty": 1
});

messageバリデータによってレンダリングされることはありません。Yii2 の他のすべてのコアバリデータはmessage、カスタム エラー メッセージを指定するために使用します。ここでそうではないのはなぜですか?

4

1 に答える 1

2

ドキュメントには、「tooShort」と「tooLong」の 2 つの特性については何も記載されていません。これらを明示的に設定することができ、フォームは意図したとおりに機能するようになりました。「メッセージ」はまだ有効な入力であるため、これは開発者が期待する機能なのだろうか。いずれにせよ、これが同様の問題を抱えている他の人の助けになることを願っています。

        [ 
            'betaKey',
            'string',
            'length' => [2, 10],
            'tooShort' => "Test-Short",
            'tooLong' => "Test-Long"
        ]
于 2015-02-26T16:30:12.733 に答える