【问题标题】:Weird Give Data Is Invalid Error Message While Trying To Update尝试更新时出现奇怪的 Give Data Is Invalid 错误消息
【发布时间】:2021-11-09 11:12:20
【问题描述】:

我有一个 Laravel 5.8 项目,我创建了这个表单来更新记录的标题:

<form action="{{ route('popups.update', ['id'=>$popup->id]) }}" method="POST">
    @csrf
    <label for="title" class="control-label">Title</label>
    <input type="text" id="title" name="title" class="form-control" value="{{ $popup->title }}">

    <button class="btn btn-success" type="submit">Submit</button>
</form>

这是Controller的更新方法:

public function update(Request $request, $id)
    {
        try{
            dd($id);
        }catch (\Exception $e) {
            dd($e);
        }
        
        return redirect()->back();
    }

但是每当我提交这个时,我都会收到这个错误:

给定的数据无效。

我真的不知道这里出了什么问题?所以如果你知道,请告诉我...

【问题讨论】:

  • 你能分享你的路线吗?
  • @knubbe 是资源路由Route::resource("popups", "PopupController");

标签: php laravel laravel-5.8


【解决方案1】:

如果你使用Route::resource,那么方法必须是PUT/PATCH in form

【讨论】:

    【解决方案2】:

    如果你使用 Route::resource('popups', PopupsController::class) 应该是这样的

    <form action="{{ route('popups.update', $popup->id) }}" method="POST">
        @csrf
        <label for="title" class="control-label">Title</label>
        <input type="text" id="title" name="title" class="form-control" value="{{ $popup->title }}">
    
        <button class="btn btn-success" type="submit">Submit</button>
    </form>
    

    您不必将数组传递给路由参数

    【讨论】:

    • 我试了一下还是报错:(
    • 刷新后可以检查表单并检查那里呈现的 URL 吗?您的表单操作中会显示什么网址?
    • action="https://mysitename.com/admin/popups/86"
    • 是的,正如我们的朋友所说,您需要在表单中包含方法欺骗:``` @method('PUT') ``` 参考:laravel.com/docs/8.x/routing#form-method-spoofing
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 2016-01-31
    相关资源
    最近更新 更多