【问题标题】:Form post request return error 419 unknown status laravel表单发布请求返回错误 419 未知状态 laravel
【发布时间】:2019-08-05 06:04:50
【问题描述】:

我想用 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');
}

【问题讨论】:

标签: php laravel post laravel-5 laravel-blade


【解决方案1】:

如果您使用 devtools 检查您的表单,您的令牌是否有任何价值?还是它有一个空值?

在显示包含表单的视图之前,尝试将此行 request()-&gt;session()-&gt;regenerateToken(); 添加到您的控制器:

public function showAddUserForm()
{
    request()->session()->regenerateToken();
    return view('user.create');
}

【讨论】:

    【解决方案2】:

    尝试替换

    <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
    • 让我们寻找另一个解决方案,在答案中添加更多细节。
    • 什么“->name('postAddUser');”用于。你能解释一下吗?
    • 这是路由的别名。这样在模板中使用很方便&lt;form action="{{ route("postAddUser") }}"
    【解决方案3】:

    我遇到了同样的问题,因为我试图将带有表单的模式添加到已经有表单的页面中。为了解决这个问题,我给了我的表单唯一的 id,然后在 form 属性的帮助下将表单 id 添加到我的所有输入中,包括 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>
    

    【讨论】:

      猜你喜欢
      • 2019-01-30
      • 2019-05-18
      • 2019-10-22
      • 2018-08-24
      • 2019-07-16
      • 2018-05-26
      • 2016-09-14
      • 2018-07-18
      • 2018-09-20
      相关资源
      最近更新 更多