問題タブ [yii2-validation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1137 参照

yii2-advanced-app - ルールのyii2カスタム検証が機能しない

yii2 でカスタム検証を実装するには?

モデルルールの私のコードは

他に私がしなければならないことはありますか?

0 投票する
2 に答える
786 参照

php - 挿入が速すぎると Yii2 Unique Validator が機能しない

データを保存するために ActiveRecord モデルを使用しています。

Unique Validator非常に完璧に動作します。しかし、データを非常に速く挿入すると、完全に機能しなくなります。一部のリクエストで、Yii でキャッチできないというエラーが表示されます。

整合性制約違反– yii\db\IntegrityException SQLSTATE[23000]: 整合性制約違反: 1062 エントリ '***' が重複しています...

別のサービスを追加せずにこの問題を処理する解決策はありますか?

ありがとう !

0 投票する
1 に答える
755 参照

yii2 - 配列フィールドの Yii2 必須バリデーター

私のコードには、JS を介して追加の機能を実装したフィールド (たとえば、フィールド名はexampleField[] ) があります。各フィールドに Yii2 に必要な Validtorを実装したいと考えています。すでに各バリデータを使用していますが、機能していません。私の yii2 バージョンは 2.0.6 です。ありがとうございます

ここに私のJavaScriptコードがあります

0 投票する
1 に答える
1117 参照

php - シナリオで ajax 検証を持つフィールドの検証メッセージを設定するには? - Yii2

2 つのフォームに 1 つのモデル ファイルを使用しています。1 つはSIGNUP用、もう 1 つはメンバーの追加用です。

SIGNUPフォームのシナリオは設定しませんでした。ただし、メンバー追加フォームのシナリオは設定されています。

モデル

意見

ここでは、 のようなシナリオを設定します$modelTeamMembers->scenario = 'addteammembersidebar';

フィールドを除くすべての検証エラー メッセージが機能しemailます。'enableAjaxValidation' => trueフィールドから削除すると、機能します。しかし、私にとって'enableAjaxValidation' => trueは必須です。

画像

ここに画像の説明を入力

画像のように、「メール アドレスを入力してください。」というエラー メッセージが表示されることがはっきりとわかります。フィールド検証エラー メッセージのみが正しく表示されません。すべてが大丈夫であることを除いて。email

emailシナリオのフィールドに検証メッセージを設定するには? ヘルプ/ヒント/提案はかなりのものです。

0 投票する
1 に答える
7180 参照

php - 正規表現 yii2 電話番号バリデーター

yii2 の正規表現バリデーターを使用して、次の電話番号を検証しようとしています。

このような

しかし、これらの電話番号の正しい正規表現を取得できません。yii2 でこれを行う別の方法はありますか。

0 投票する
2 に答える
1331 参照

validation - 少なくとも 2 つのオプションを選択する必要がある検証規則

次の検証ルールがあります。

この属性は、 Select2ウィジェット (複数選択)dagen_idsによって入力される配列です。

私が達成すべきことは、ユーザーが少なくとも2 つのオプション$model->frequentie == 2選択する必要がある場合にのみ必要な検証ルールを持つことです。

2番目の部分では、次のインライン検証コードを試しましたが、残念ながら効果がないようです..

誰かが私をもう少し助けて、これらの検証ルールを組み合わせる方法を説明してもらえますか?

編集

コントローラ:

JQuery:

0 投票する
2 に答える
889 参照

yii2 - Yii2 の場合の検証

2 組の入力フィールドのうち、どちらか一方だけが必要です。検証を正しく行うことができません。

listing_image_urlが null の場合にposter_image_urlのみ必要です。$model->listingImage

も使ってみstrlen($model->listingImage) == 0ました。

上記と同じですが、逆です。

0 投票する
7 に答える
37672 参照

activerecord - Yii2: ActiveRecord でデフォルトの属性値を設定するには?

これは些細な質問のように思えるかもしれませんが、私が考えることができる明白な解決策にはすべて、独自の欠陥があります。

私たちが望むのは、新しいレコードのみにデフォルトの ActiveRecord 属性値を設定できるようにすることです。これは、検証前および検証中に読み取り可能になり、検索に使用される派生クラスに干渉しないようにするためです。

クラスをインスタンス化したらすぐにデフォルト値を設定して準備する必要があるため(new MyModel)->attr、デフォルト値が返されますattr

いくつかの可能性と問題点を次に示します。

  • A)MyModelメソッドをオーバーライドし、trueのinit()場合にデフォルト値を割り当てます:isNewRecord

    問題: 検索。デフォルトの属性を明示的に設定解除しない限りMySearchModel(忘れやすいため、非常にエラーが発生しやすくなります)、search()派生MySearchModelクラスで呼び出す前に値が設定され、検索が妨げられます (attr属性は既に設定されているため、検索が返されます)。間違った結果)。Yii1.1 では、これは を呼び出すunsetAttributes()前に を呼び出すことで解決されてsearch()いましたが、Yii2 にはそのようなメソッドはありません。

  • B)メソッドを次のようにオーバーライドMyModelします。beforeSave()

    問題: 保存されていないレコードに属性が設定されていません。(new MyModel)->attrですnullさらに悪いことに、この値に依存する他の検証ルールでさえ、検証後にbeforeSave()呼び出されるため、この値にアクセスできません。

  • C)検証中に値が使用可能であることを確認するには、代わりにbeforeValidate()メソッドをオーバーライドして、次のようにデフォルト値を設定します。

    問題: 保存されていない (検証されていない) レコードに属性がまだ設定されていません。$model->validate()デフォルト値を取得したい場合は、少なくとも呼び出す必要があります。

  • D)DefaultValidator inを使用しrules()て、検証中にデフォルトの属性値を次のように設定します。

    問題: B) および C) と同じ。実際にレコードを保存または検証するまで、値は設定されません。

では、デフォルトの属性値を設定する正しい方法何でしょうか? 概説された問題のない他の方法はありますか?