例えばこのようなフォームがあったとして、
例えばこんなフォーム
<textarea name="article_1"></textarea>
<textarea name="article_2"></textarea>
<textarea name="article_3"></textarea>
<textarea name="article_4"></textarea>
<textarea name="article_5"></textarea>
article_1〜article_5のうちのどれかが入っていればOK(全部空だとエラー)というバリデーションを行いたいとする。
使用可能なバリデーションルールはこんな感じ
使用可能なバリデーションルールを見たところでは、以下のバリデーションが使えそうなところ
required_without_all:foo,bar,...
フィールドは、指定された他のフィールド全部が存在しない場合のみ、この項目が入力されていることをバリデートします。
実装するならこんな感じ
バリデートするフィールドを設定し、常に空の状態にする。
例えばこんなフォーム
<input type="hidden" name="articles" value="">
<textarea name="article_1"></textarea>
<textarea name="article_2"></textarea>
<textarea name="article_3"></textarea>
<textarea name="article_4"></textarea>
<textarea name="article_5"></textarea>
判定したいフィールドを「required_without_all」で全て指定する。
public function rules()
{
return [
'articles' => 'required_without_all:article_1,article_2,article_3,article_4,article_5'
];
}
public function messages() {
return [
'articles.required_without_all' => 'articleは一つ以上入力してください。'
];
}