Я написал метод редактирования поста, который сначала состоял только из текста. Я сделал обновление, используя запрос PUT.
Теперь я хочу включить изображения в свои сообщения, поэтому я добавил его, и оно работает для моего запроса POST о создании сообщения, но не работает для моего сообщения обновления , когда я хочу изменить изображение, так как запрос PUT не поддерживает загрузку файлов.
Так что теперь я застрял, пытаясь изменить мой метод обновления с запроса PUT, который обновляет только текст до запроса POST, который обновляет оба текст и изображение, если они есть.
Это код, который я написал до сих пор:
public function update(Request $request, Post $post)
{
//store updated image
if($request->hasFile('image') && $request->file('image')->isValid()){
if($post->hasMedia('posts')) {
$post->media()->delete();
}
$post->addMediaFromRequest('image')->toMediaCollection('post', 's3');
}
$post->update(request()->validate([
'body' => 'required'
]));
return redirect($post->path());
}
Я думаю, что обновление $ post-> не работает для запроса POST. Я просто хочу обновить текст, если дано обновление.
Использование Laravel 6.
РЕДАКТИРОВАНИЕ : Моя структура макета формы (упрощенная)
<form action="action="/posts/{post}" method="POST">
@method('PUT')
@csrf
<div class="form-group row">
<input id="body" type="text" class="form-control" name="body" value="{{ old('body', $post->body) }}">
<input id="image" type="file" class="form-control" name="image">
<button type="submit" class="btn btn-primary">Update Post</button>
</form>
Мои маршруты:
Route::get('/posts/{post}/edit', 'PostsController@edit')->name('posts.edit');
Route::put('/posts/{post}', 'PostsController@update');