[英]How to apply validation on any single field having same name Laravel?
我有一個包含多語言功能的項目。 因此,我正在創建一種表單,該表單包含多種語言(如果用戶需要的話)。 但是驗證應該像是如果任何一個具有相同名稱的字段包含值,然后將剩下的保留為
形成
<form>
<input type="text" name="name[EN]" />
<input type="text" name="name[AR]" />
<input type="text" name="name[FR]" />
<input type="submit" value="submit" />
</form>
現在,我想驗證一下,如果這些字段中的任何一個都有值,則提交表單,否則引發驗證
所以我嘗試了Laravels required_if ,但是沒有用。
public function rules()
{
return [
'name.*' => 'required_if:name,1',
];
}
那么如何在laravel中進行驗證
我相信這應該可以解決問題:
$rules = [
'name.EN' => 'required_without_all:name.AR,name.FR',
'name.AR' => 'required_without_all:name.EN,name.FR',
'name.FR' => 'required_without_all:name.EN,name.AR',
];
如果其他字段為空https://laravel.com/docs/5.6/validation#rule-required-without-all,該規則將使該字段成為必需字段。
我已經搜索過,但是找不到內置的方法。 您可以使用創建自己的規則
php artisan make:rule NonEmptyFiltered
然后將規則定義為:
class NotEmptyFiltered implements Rule {
public function passes($attribute, $value) {
return !empty(array_filter($value));
}
public function message() {
return ':attribute must have at least one non-null element';
}
}
然后,您可以執行以下操作:
public function rules()
{
return [
'name' => [ new NonEmptyFiltered() ]
];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.