嗨我正在使用laravel进行自定义验证我是新的,现在我的控制器代码提到这是我如何验证上传文件。一切正常,但我有问题在视图页面显示自定义消息它显示默认消息而不是我的自定义消息请看看,让我知道我做错了什么。
$this->validate(
$request, [
'project_file.*' => 'required|size:2048',
],
[
'project_file.required' => 'Upload File Field Is Required',
'project_file.max' => 'Upload File Field Must Be 2MB',
]
);
$messages = [
'required' => 'The File should not be more then 2Mb',
'size' => 'The must be exactly Mb.',
];
$validator = Validator::make($input, $rules, $messages);
if($validator->fails()) {
return Redirect::back()->withErrors($validator);
}
我的View代码显示错误是:
@if ($errors->any())
<div class="alert alert-danger">
<strong>{!! implode('', $errors->all('<div>:message</div>')) !!}</strong>
</div>
@endif
我觉得问题可能是因为您没有在messages数组中传递字段名称占位符。
您可以添加custom error messages进行验证。您可以传递第三个参数Validator::make
方法。
$messages = [ 'required' => 'The :field should not be more then 2Mb' ];
$validator = Validator::make($input, $rules, $messages);
:field
占位符将被字段名称替换
仅使用点操作为特定字段添加自定义错误消息
$messages = [
'file.required' => 'The image should not be more then 2Mb',
];
希望这可以帮助。
最好不要在控制器中编写验证逻辑,因为它会导致胖控制器和非常混乱的控制器,因此您可以使用单独的请求类以更好的方式执行。
首先,在控制台中使用以下命令来创建这样的自定义验证请求类,
php artisan make:request PostRequest
现在,将在该文件的PostRequest.php
中创建一个名为app/Http/Requests/
的文件,您应该进行如下验证。
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class PostRequest extends FormRequest
{
/**
* 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 [
//
'project_file.*' => 'required|max:2048',
];
}
public function messages()
{
return [
'required' => 'Upload File Field Is Required',
'max' => 'The File should not be more then 2Mb',
];
}
}
现在,传递哪种表单请求的函数你必须像这样更改Request to PostRequest,以便自动执行验证。
public function post(PostRequest $request){
//
}