Форма отправки запроса возврата ошибка 419 неизвестный статус laravel
Я хочу создать нового пользователя с id_ward, но когда я отправляю форму отправки, она возвращает ошибку 419(неизвестный статус)
Помогите мне, пожалуйста
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalCenterTitle">Thêm user</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form action="./admin/users/add_user" method="post" id="form-add-user">
<input type="hidden" name="_token" value="{{csrf_token() }}" />
<div class="form-group row">
<div class="col-md-6">
<label for="add_user_area">Phường/xã:</label>
<select id="add_user_area" class="form-control" name="id_ward">
@foreach ($areas as $area)
<option value={{$area->id}}>{{$area->name}}</option>
@endforeach
</select>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" onclick="document.getElementById('form-add-user').submit()"
class="btn btn-primary">Thêm
</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Đóng</button>
</div>
</div>
И это мой контроллер
function postAddUser(Request $request)
{
$user = new User;
$user->id_ward = $request->id_ward;
$user->save();
return redirect('admin/users/list_user');
}
3 ответа
Если вы проверяете свою форму с помощью devtools, имеет ли ваш токен какое-либо значение? или оно имеет пустое значение?
Попробуйте добавить эту строку request()->session()->regenerateToken();
на ваш контроллер, прежде чем показывать представление, содержащее форму:
public function showAddUserForm()
{
request()->session()->regenerateToken();
return view('user.create');
}
Попробуйте заменить
<input type="hidden" name="_token" value="{{csrf_token() }}" />
->
@csrf
Это поможет https://laravel.com/docs/5.8/csrf
Если это не поможет, давайте разберемся. Что мы написали в маршрутах? Там должно быть что-то вроде.
Route::post('/users/add_user', 'UsersController@postAddUser')->name('postAddUser');
в контроллере
public function postAddUser() {
$user = new User();
$user->id_ward = request()->id_ward;
$user->save();
return redirect('admin/users/list_user');
}
ввиду
<form action="{{ route("postAddUser") }}" method="post" id="form-add-user">
У меня была такая же проблема, потому что я пытался добавить модал с формой на страницу, которая уже имеет форму. Чтобы решить эту проблему, я дал своим формам уникальные идентификаторы, а затем с помощью атрибута формы добавил идентификатор формы ко всем своим входным данным, включая входные данные csrf. Ниже приведен пример. Я надеюсь, что это решит вашу проблему
<form action="{{route('template.update')}}" id="edit_template_{{$template->id}}" method="post">
<input type="hidden" name="_token" value="{{csrf_token() }}" form="edit_template_{{$template->id}}">
<input type="number" name = "unit_price" form="edit_template_{{$template->id}}">
<button form="edit_template_{{$template->id}}">Save</button>
</form>