我有一个用于添加和更新的通用刀片表单
<form action={{ $bookEnt->id == null ? route( "book-post" ) : route("book-update",['bookId'=>$bookEnt->id]) }} method = "POST" enctype="multipart/form-data">
@csrf
@method( $bookEnt->id == null ? 'post':'put')
//blade fields
</form>
我已经创建了一个请求来验证表单request
public function rules()
{
return [
'title' => 'required|string',
'file_pdf' => 'required|mimes:pdf|max:30720',
];
}
下面添加控制器
public function add(AppHttpRequestsBookFormRequest $request)
{
// todo : msg
if( $request->isMethod('put') || $request->isMethod('post') )
{
$book = $bookId ? $this->getBookById($bookId):new Book;
-----
}
}
当方法被放置,我将如何跳过验证'file_pdf' ?我不想再创建一个请求类。
使用开关箱和检查请求方法类型:
public function rules()
{
switch ($this->method()) {
case 'POST':
return [
'title' => 'required|string',
'file_pdf' => 'required|mimes:pdf|max:30720',
];
case 'PUT':
return [
'title' => 'required|string'
];
default:
return [];
}
}