簡體   English   中英

如何在具有相同名稱Laravel的任何單個字段上應用驗證?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM