前提・実現したいこと
Laravel 5.7 で、カスタムバリデーションの実装に関してです。
以下のルールでバリデーション掛けたいと思っています。
※ ソースは適当です
HTML
1<form> 2項目:A 3<input type="text" name="a"> 4 5項目:B 6<input type="text" name="b"> 7 8</form>
項目:A・Bは通常必須属性ではない。
項目:A ・B共に入力がない場合、どちらかに値が存在しないといけない。
抜粋ですが以下のようなバリデートルールをクロージャーで実装してみました
php
1// 項目:Bに対するバリデーションルールです 2[ 3 function( $attribute, $value, $fail ) { 4 5 if ( empty( $this->getValue( 'a' ) ) && empty( $this->getValue( $attribute ) ) ) { 6 return $fail( '項目:Bの入力が必要です' ); 7 } 8 } 9];
正常に動きません。原因は分かっています。
- getValue 上記形式だと使えない
- request オブジェクトを引き渡す方法が分からない
- 項目:Bが未入力だとそもそもバリデートが動かない
こういった場合、リファレンスを見て Rule オブジェクトを実装するか?Request オブジェクトを実装するか?
という情報も見てみたのですが、どの方法が良い方法なのかがいまいちわかりません。
required_with、required_without 等も要件とちょっと違う挙動になります。
具体的にこう実装したって方いらっしゃないでしょうか?
仕様自体はそう珍しいものではないので、むりくりやればいいんでしょうが、
FWのお作法に則った実装が出来れば知りたいです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/12 00:49