前提・実現したいこと
私は今、laravelでバリデーションて引っかかった事があります。
まず、カードの貸し借り+使用記録データのテーブルがあります。
テーブル中身はこんな感じ
table :card_using_records
名前 | データ型 |
---|---|
id | int(10) |
card_id | int(10) |
receipt_path | varchar(255) |
is_using | tinyint(1) laravelのboolean type |
//他は関係ないのでSKIP | |
で、私の欲しいバリデーションはis_usingは1( true )の時にreceipt_pathは必須項目、これは
https://readouble.com/laravel/5.7/ja/validation.html#rule-url
を参考に
receipt_path => ['required_if:is_using,1', 'nullable', 'string']
これで問題ないです。
逆に、is_usingは0( false )の時に receipt_path は空でなければならない。
これのやり方がよくわかりません。
発生している問題・エラーメッセージ
該当のソースコード
php
1//App\Http\Requests\StoreCardUsingRecordRequest 2 3 public function rules() 4 { 5 return [ 6 'card_id' => ['required', 'exists:' . (new Card)->getTable() . ',id'], 7 'is_using' => ['required', 'boolean'], 8 'receipt_path' => ['required_if:is_using,1', 'nullable', 'string'], 9 ]; 10 }
試したこと
'receipt_path' => ['required_if:is_using,1', 'nullable', 'string', Rule::requiredIf(function () { return ( $this->get('is_using') === '0' && empty( $this->get('receipt_path') ) ); })],
↑うまく行きません、is_usingは1( true )の時にreceipt_pathは必須項目しかチェックのみチェックしています。
補足情報(FW/ツールのバージョンなど)
Laravel 5.7
PHP 7.2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/25 05:22
2019/12/25 05:27
2019/12/25 06:01
2019/12/25 06:05
2019/12/25 06:06
2019/12/25 06:40