2016-11-07 5 views
1

Laravel 5.1では、投稿値がtrueまたはRegex Matchを使用してfalseに設定されているかどうか確認するために妥当性検査を行っていました。私はこのようLaravelの検証から値をチェックLaravel 5.3妥当性検査TrueまたはFalseの正規表現チェックが失敗する

acceptTerms true 

$validator = Validator::make($postData, [ 
    'acceptTerms' => ["regex:(true|false)"], 
]); 

Laravel 5.3にアップデートしたので、上記の検証ルールが失敗し、常にエラーをスロー掲載値は次のようなものです: acceptTerms format is invalid.

なぜLarvel 5.3に値がtrueまたはfalseに設定されているかを確認するにはどうすればよいですか?

EDIT 1:

私は追加するのを忘れ、ポストされたデータは、JSON.stringify(data)として送信され、Laravelに私はInput::json('data')としてそれを受け取ります。それは何か変わるだろうか?

EDIT 2:

dd($postData)戻り、この:

array:31 [ 
    "id" => "8" 
    "appId" => "1" 
    "name" => "Asdsad" 
    "acceptTerms" => true 
    ] 
+0

3値演算子? – Birdy

+0

申し訳ありませんが私は理解できません。 – Neel

+0

私がまだ質問に追加しなかったもう一つの点は、投稿されたデータが 'JSON.stringify(data)'として送られ、Laravelでは 'Input :: json( 'data')'として受け取られるということです。それは何か変わるだろうか? – Neel

答えて

2

私はそれがregexより読みやすいと思います。

The field under validation must be able to be cast as a boolean. Accepted input are true, false, 1, 0, "1", and "0".

+1

thats it!あなたは今日2回私を救った。ヒープありがとう!私はいつも 'boolean'チェックが1と0しかないと思って、5.3でそれを試したことはありませんでした。バリデーションを 'boolean'に更新することはやりました。 – Neel

+1

助けてくれてうれしいです。 ) –

1

あなたにin()でこれを試すことができます:それはブールなら、あなたはbooleanを使用することができます

'acceptTerms' => 'in:true,false', 
+0

そのために、 'Method [validateTrue、false]が存在しません。 'というエラーが出ます。 – Neel

+0

申し訳ありませんが私の間違いは、今更新された答えです。 –

+0

正規表現パターンを使用する場合、特に正規表現にパイプ文字が含まれている場合は、パイプ区切り文字を使用する代わりに配列でルールを指定する必要があります。 – Birdy

関連する問題