Форма отправки запроса возврата ошибка 419 неизвестный статус laravel - PullRequest
1 голос
/ 14 марта 2019

Я хочу создать нового пользователя с 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">&times;</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 ]

0 голосов
/ 14 марта 2019

Если вы проверяете свою форму с помощью devtools, имеет ли ваш токен какое-либо значение?или оно имеет пустое значение?

Попробуйте добавить эту строку request()->session()->regenerateToken(); в свой контроллер, прежде чем показывать представление, содержащее форму:

public function showAddUserForm()
{
    request()->session()->regenerateToken();
    return view('user.create');
}
0 голосов
/ 24 апреля 2019

У меня была такая же проблема, потому что я пытался добавить модал с формой на страницу, которая уже имеет форму.Чтобы решить эту проблему, я дал своим формам уникальные идентификаторы, а затем с помощью атрибута формы добавил идентификатор формы ко всем своим входным данным, включая входные данные 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>
0 голосов
/ 14 марта 2019

Попробуйте заменить

<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">
...