簡體   English   中英

Laravel表單陣列驗證

[英]Laravel form array validation

我需要一些幫助才能使用Laravel 5.4驗證我的表單。

我的表格:

{{Form::bsText('general[firstname]')}} 
{{Form::bsText('general[lastname]')}}

然后我有一個RequestObject用於驗證,具有以下規則:

'general[firstname]' => 'required|string:max:255',
'general[lastname]' => 'required|string:max:255',

這樣,當不按預期方式為空時,它會生成“必需”錯誤。 雖然當我填寫一個字符串時,它仍然提供所需的錯誤消息。

我也從laravel文檔中嘗試了以下內容:

'general.firstname' => 'required|string:max:255',
'general.lastname' => 'required|string:max:255',

和:

'general.*.firstname' => 'required|string:max:255',
'general.*.lastname' => 'required|string:max:255',

以上兩者都沒有給出錯誤。

根據要求,這是我的完整Request對象:

/**
 * Determine if the user is authorized to make this request.
 *
 * @return bool
 */
public function authorize()
{
    $user = Auth::user();

    return ($user && $user->isProjectManager()) ||
            ($user && $user->isAdmin());
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    switch($this->method()){
        case 'GET':
        case 'DELETE':
            return [];
        case 'POST':
            return [
                'name' => 'required|string|max:255',
                'email' => 'required|string|email|max:255|unique:users',
                'role' => 'in:2,3,4,5,6,7',
                'password' => 'required|string|min:6|confirmed',
                'project_manager_gegevens_photo' => 'required_if:role,2|mimes:png,jpeg,gif',
                'general[voornaam]' => 'required|alpha:max:255',
                'general[achternaam]' => 'required|string:max:255',
                'general[date]' => 'required_if:role,3,4,5|date|after:today',
                'general[telefoonnummer]' => 'required_if:role,3,4,5',
                'general[interne_medewerker]' => 'boolean',
                'general[geslacht]' => 'in:m,v,o',
            ];
        case 'PUT':
        case 'PATCH':
            return [
                'name' => 'required|string|max:255',
                'password' => 'required|string|min:6|confirmed',
            ];
        default:return [];
    }
}

證明它與數組驗證有關:當我將名稱更改為:

{{Form::bsText('general_firstname')}} 

'general_firstname' => 'required|string:max:255'

它會像你期望的那樣驗證它。 雖然,我喜歡清潔和分離的東西,並希望有一個包含所有一般領域的陣列。

那么,我該如何驗證它以便它是一個數組呢?

使用alpha而不是字符串,

喜歡,

'general.firstname' => 'required|alpha|max:255'

替換這個,

'general[firstname]' => 'required|string:max:255',

請參閱文檔, https://laravel.com/docs/5.4/validation#rule-alpha

嘗試這個

'general.firstname' => 'required|alpha|max:255',
'general.lastname' => 'required|alpha|max:255',

你是這樣用的嗎?

 'general[voornaam]' => 'required|alpha:max:255',
  'general[achternaam]' => 'required|string:max:255',

如果可以的話請用以下代替: -

'general[voornaam]' => 'required|alpha|max:255',
'general[achternaam]' => 'required|alpha|max:255',

好吧,我還沒有檢查5.4中做了哪些更改但是根據5.1我在我的項目中進行了以下表單驗證:

    $data = Input::all();

    $rules = [
            'fname' => ['required', 'min:3'],
            'lname' => ['required', 'min:3'],   
            'email' => ['required', 'email', 'unique:users', 'min:3'],
            'password' => ['required', 'min:4'],
            'type' => ['required']
            ];
    $validator = $this->validate($request, $rules);

你可以看到fname和lname我沒有提到任何數據類型,即默認是字符串,所以你可以嘗試這種方式我認為。

可能這可以幫到你。

所以,我忘記的是使用自定義表單組件。 在這些組件中,我查找了該字段的名稱。 所以我會檢查

$errors->get('general[voornaam]')

我應該在哪里得到它們:

$errors->get('general.voornaam')

是啊! 今天到此為止!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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