Laravel如何在更新时跳过单个字段验证



我有一个用于添加和更新的通用刀片表单

<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 [];
}
}

最新更新