下面是我的代码;
FruitRequest.php
class FruitRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|alpha',
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048'
];
}
public function messages()
{
return ['name.required' => response("Name should be mandatory", 404),
'name.alpha' => response("Name should be contains only letters", 404),
'image.required' => response("Foto should be mandatory", 404),
'image.mimes' => response('Foto should be jpeg,png,jpg,gif,svg', 404),
'image.max' => response('Foto size should be blow 2 MB', 404),
];
}
}
FruitController.php
use App\Http\Controllers\Controller;
use App\Http\Requests\FruitRequest;
class FruitController extends Controller
{
public function store(FruitRequest $request)
{
echo $request->input('name');
//above line gives nothing to me
}
}
如果我使用extends Request
而不是extends FruitRequest
,那么这给了我用户在邮递员中传递的价值。我不知道为什么这个自定义Request类不起作用。我附上了屏幕截图。请帮助...。
答案 0 :(得分:0)
长时间不使用邮递员,我正在用自己的代码进行测试
我正在这样使用FormRequest:
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;
class YourRequest extends FormRequest
{
//this function called if Validator::make()->fails();
//here where you can modifying your message
protected function failedValidation(Validator $validator)
{
//note this only for API, for formData use \Illuminate\Validation\ValidationException($validator)
throw new HttpResponseException(response()->json($validator->errors()->all(), 422));
//this will get parameter attribute set from FormRequest
//attributes() along with the error message,
//or $validator->errors()->all() to get messages only like my screenshot
//or modify message with your logic
}
public function authorize() { return true; }
public function rules() { return []; }
public function attributes() { return []; }
public function messages() { return []; }
}
在控制器中:
use YourRequest;
public function store(YourRequest $req)
{
return response($req->all())->setStatusCode(200);
}
在您的FormRequest中替换response(),仅输入文本:
public function messages()
{
return ['name.required' => "Name should be mandatory"],
}
答案 1 :(得分:0)
使用FormRequest扩展您的请求类
use Illuminate\Foundation\Http\FormRequest;
class FruitRequest extends FormRequest
有关更多详细信息,请访问laravel的官方文档:https://laravel.com/docs/7.x/validation#creating-form-requests