2017-01-25 11 views
0

use_shippingがチェックされておらず、ユーザがshipping_noteの値を入力しなかった場合 - 検証は合格していますが失敗していますか? LaravelリクエストクラスでLaravel検証とチェックボックス

<input type="text" name="shipping_note" value=""> 

<input type="hidden" name="use_shipping" value="0"> 
<input type="checkbox" name="use_shipping" value="1" {{ old('use_shipping', $delivery->use_shipping) ? 'checked="checked"' : '' }}> 

テキスト:

public function rules() 
{ 

    return [ 
     'use_shipping' => 'boolean', 
     'shipping_note' => 'required_with:use_shipping', 
    ]; 
} 
+0

どのようなエラーメッセージが表示されますか?それが失敗した理由を教えてくれましたか? – Styphon

+0

'use_shipping'がチェックされていないときに' shipping_note'を入力するように指示するエラーメッセージ –

答えて

4

required_with検査状態:

フィールド検証の下には存在している場合のみ、空であってはならないことを他の指定されたフィールドのいずれかはプレゼント。

入力が隠されているため、shipping_noteフィールドは常に表示されます。チェックボックスをオフにしてもフィールドが存在するため、required_withの検証が常に実行されます。

ほとんどの場合、あなたが探していることはrequired_if述べ検証、次のとおりです。

required_if:anotherfield、値、...

検証の下のフィールドが存在するとはなりませんanotherfieldフィールドがに等しい場合は空です。

public function rules() 
{ 
    return [ 
     'use_shipping' => 'boolean', 
     'shipping_note' => 'required_if:use_shipping,1', 
    ]; 
} 

これはuse_shippingの値はチェックボックスがチェックされたときにのみ起こるべき1、あるときshipping_noteにのみ必要とされることが原因となる必要があります。

+0

ありがとうございました。残念なことに '' required_if:use_shipping、1 '、 'は動作しません。これまでと同じ動作です。 –

+1

@ I'll-Be-Back本当ですか? Validator :: make(['use_shipping' => '0'、 'shipping_note' => '']、['use_shipping' => 'boolean'、 'shipping_note' => 'required_if:use_shipping、1' ]) - > passes() 'を返し、' true'を返します(検証は成功します)。 – patricus

+0

申し訳ありませんが、私は間違ったページでテストしました - それは確かに働いています、ありがとう:) –