您好我正在使用laravel进行自定义验证我现在是新的,我的控制器代码提到这是我验证上传文件的方式。 一切正常,但我在查看页面上显示自定义消息时出现问题 它显示默认消息而非我的自定义消息如果我做错了,请查看并告诉我。
myCallbackFunc
显示错误的我的查看代码是:
$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);
}
答案 0 :(得分:0)
最好不要在控制器中编写验证逻辑,因为它会导致胖控制器和非常混乱的控制器,因此你可以使用单独的请求类来做得更好。
首先,在控制台中使用以下命令来创建这样的自定义验证请求类,
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更改为PostRequest,以便自动执行验证。
public function post(PostRequest $request){
//
}
答案 1 :(得分:0)
我觉得问题可能是因为您没有在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',
];
希望这有帮助。