#php #laravel #post
#php #laravel #Публикация
Вопрос:
Я вроде как новичок в Laravel, и я создал форму для своей страницы, в которую пользователи могут добавлять новое изображение, и эта форма находится в create.blade.php
:
<form action="/p" enctype="multipart/form-data" method="post">
@csrf
<div class="row">
<div class="col-8 offset-2">
<div class="row">
<h1>Add New Post</h1>
</div>
<div class="form-group row">
<label for="caption" class="col-md-4 col-form-label">Post Caption</label>
<input id="caption"
type="text"
class="form-control @error('caption') is-invalid @enderror"
name="caption"
value="{{ old('caption') }}"
autocomplete="caption" autofocus>
@error('caption')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="row">
<label for="image" class="col-md-4 col-form-label">Post Image</label>
<input type="file" class="form-control-file" id="image" name="image">
@error('image')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="row pt-4">
<button class="btn btn-primary">Add New Post</button>
</div>
</div>
</div>
И это web.php
файл (routes):
Route::get('/p/create','PostsController@create');
Route::get('/p','PostsController@store');
Route::get('/profile/{user}', 'ProfilesController@index')->name('profile.show');
Как вы можете видеть, это относится к PostController.php
, который является этим:
class PostsController extends Controller
{
public function create()
{
return view('posts.create');
}
public function store()
{
dd(request()->all());
}
}
Также я выполняю команду php artisan route:list
, и это все:
Итак, что здесь происходит не так? Я много искал, но не смог найти ничего полезного. Поэтому, если вы знаете, как это решить, пожалуйста, дайте мне знать.
Заранее спасибо
Комментарии:
1. просто укажите свой маршрут — Route::post(‘/p’,’PostsController@store’);
Ответ №1:
Вы отправляете запрос на сервер, поэтому вам нужно задать свой HTTP-запрос как post, а не get, вот так
Route::post('/p','PostsController@store');
Ответ №2:
Вам нужно добавить POST
маршрут
Route::post('/p','PostsController@store');
Ответ №3:
-
В create.blade.php метод form есть
POST
, но в web.phpRoute::get('/p','PostsController@store');
поэтому вам следует изменитьRoute::post('/p','PostsController@store')
вместоRoute::get('/p','PostsController@store')
-
В контроллере
use IlluminateHttpRequest; class PostsController extends Controller { public function create() { return view('posts.create'); } public function store(Request $request) { dd($request->input('image')); } }