[英]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',
嘗試這個
'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.