Laravel 5 请求 - 如何显示单个验证错误
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/29456483/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Laravel 5 request - How to show individual validation errors
提问by geoffs3310
I have created a request in L5 to handle saving a contact which looks like so:
我在 L5 中创建了一个处理保存联系人的请求,如下所示:
<?php namespace App\Http\Requests;
use App\Http\Requests\Request;
class AddContactRequest extends Request {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'category_ids' => 'required|array|exists:categories,id',
'gender' => 'required|in:Male,Female',
'first_name' => 'required',
'last_name' => 'required',
'company' => 'required',
'position' => 'required',
'website_url' => 'url',
'facebook_url' => 'url',
'twitter_url' => 'url',
'instagram_url' => 'url',
'misc_url1' => 'url',
'misc_url2' => 'url',
'address_1' => 'required',
'citytown' => 'required',
'postcode' => 'required',
'country_id' => 'required|integer|exists:countries,id',
'work_email' => 'email',
'home_email' => 'email',
'work_phone' => '',
'mobile_phone' => '',
'home_phone' => ''
];
}
/**
* Error messages for validation rules
* @return array
*/
public function messages()
{
return [
'category_ids.required' => 'You must select at least one category.',
'category_ids.array' => 'Categories must be an array.',
'category_ids.exists' => 'The category does not exist.',
'gender.required' => 'The gender field is required.',
'gender.in' => 'The gender is invalid.',
'first_name.required' => 'The first name field is required.',
'last_name.required' => 'The last name field is required.',
'company.required' => 'The company field is required.',
'position.required' => 'The position field is required.',
'website_url.url' => 'The website URL is not a valid URL.',
'facebook_url.url' => 'The facebook URL is not a valid URL.',
'twitter_url.url' => 'The twitter URL is not a valid URL.',
'instagram_url.url' => 'The instagram URL is not a valid URL.',
'misc_url1.url' => 'The miscellaneous URL 1 field is not a valid URL',
'misc_url2.url' => 'The miscellaneous URL 2 field is not a valid URL',
'address_1.required' => 'The address 1 field is required.',
'citytown.required' => 'The city / town field is required.',
'postcode.required' => 'The postcode field is required.',
'country_id.required' => 'The country field is required.',
'country_id.integer' => 'The country field must contain an integer.',
'country_id.exists' => 'The country is invalid.',
'work_email.email' => 'The work email field is not a valid email address.',
'home_email.email' => 'The home email field is not a valid email address.'
];
}
}
When the validation fails I'm able to output all of the errors in my view with the following code:
当验证失败时,我可以使用以下代码在我的视图中输出所有错误:
@if (count($errors) > 0)
<div class="alert alert-danger">
<strong>Whoops!</strong> There were some problems with your input.<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
But I want to show individual errors and add a class to the form group if that field has an error like so:
但是我想显示单个错误并将一个类添加到表单组,如果该字段有这样的错误:
<div class="form-group <?php echo ($messages->has('first_name')) ? 'has-error' : ''; ?>">
<label for="first_name" class="control-label col-xs-12 col-sm-3 col-md-4 col-lg-4">First Name</label>
<div class="col-xs-12 col-sm-6 col-md-8 col-lg-8">
{!! Form::text('first_name', '', array('class' => 'form-control')) !!}
</div>
</div>
The $messages->has() method doesn't seem to work though I get the following error:
尽管出现以下错误,但 $messages->has() 方法似乎不起作用:
Whoops, looks like something went wrong.
2/2
ErrorException in 6351f2a902813f4fd7aa70b7ef38354d line 34:
Undefined variable: messages (View: C:\xampp\htdocs\fourteen-ten\resources\views\admin\contacts\add.blade.php)
Does anyone know why I am getting this error?
有谁知道我为什么会收到这个错误?
回答by Sulthan Allaudeen
To display error individually. You shall place this under each element
单独显示错误。你应该把它放在每个元素下
<div class="error">{{ $errors->first('category_ids') }}</div>
Note :
笔记 :
You shall create a class named as error
in your css for this.
error
为此,您将在 css 中创建一个名为 as 的类。
This will display the errors only if any occcurs
这将仅在发生任何错误时显示错误
回答by geoffs3310
OK thanks to Sulthan I was able to figure it out. Instead of:
好的,多亏了 Sulthan,我才能弄清楚。代替:
$messages->has('field_name')
I should use:
我应该使用:
$errors->has('field_name')
回答by Habeebullah Saheb
I feel this is the simple procedure:
我觉得这是一个简单的过程:
$rules=array('mobile'=>'required|numeric');
$validator=Validator::make(Input::all(),$rules);
if($validator->fails()){
$failedRules=$validator->failed();
if(isset($failedRules['signInType']['Required'])){
return response()->json(["status"=>"Error","message"=>"Please enter signInType"]);
}
if(isset($failedRules['signInType']['Numeric'])){
return response()->json(["status"=>"Error","message"=>"mobile must be numeric"]);
}
}