【问题标题】:Laravel does not trigger the update funktionLaravel 不会触发更新功能
【发布时间】:2021-05-18 11:58:59
【问题描述】:

我的小问题是,如果我点击编辑页面上的安全按钮,Laravel 不会触发更新功能。点击保存后唯一发生的事情是页面被重新加载。

这是我的小sn-p代码:

edit.blade sn-p:

<form method="POST" action="{{ route('t_update', $transport->id) }}" enctype="multipart/form-data">
        @csrf
    <section id="user">
        <div class="container-fluid">
            <div class="card card-default">
                <div class="card-header" data-card-widget="collapse">
                    <h3 class="card-title">User</h3>
                    <div class="card-tools">
                        <button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fas fa-minus"></i></button>
                    </div>
                </div>
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-3">
                            <div class="form-group">
                                ...
        </div>
    </section>

    <section class="options">
        <div class="row">
            <div class="col-md-6 text-right">
                <a class="btn btn-danger" href="{{ route('home') }}">
                    <i class="fas fa-times">
                    </i>
                    Cancel
                </a>
            </div>
            <div class="col-md-2">
                <button class="btn btn-success" type="submit" name="save">
                    <i class="fas fa-plus">
                    </i>
                    Save
                </button>
            </div>
        </div>
    </section>
    </form>

web.php


Route::get('/home/create', [App\Http\Controllers\MainController::class, 'create'])->name('t_create');
Route::post('/home/create', [App\Http\Controllers\MainController::class, 'store'])->name('t_save');
Route::get('/home/edit/{id}', [App\Http\Controllers\MainController::class, 'edit'])->name('t_edit');
Route::post('/home/edit/{id}', [App\Http\Controllers\MainController::class, 'update'])->name('t_update');

MainController(更新函数sn-p):

public function update(Request $request, $id)
    {
        $this->validate($request, [
            'firstname' => 'required',
            'lastname' => 'required',
            ...
        ]);

        Transport::find($id)
                ->update([
                    'firstname' => $input['firstname'],
                    'lastname' => $input['lastname'],
                   ...
                ]);

        return redirect()->route('home')
            ->with('success','Data was successfully updated.');
    }

【问题讨论】:

  • 可能您遇到了未打印的验证错误
  • 检查表单标签中的 action 属性?
  • 另一方面,您将POST HTTP 动词用于执行更新操作的方法。这应该是PUTPATCH

标签: php laravel laravel-8 php-7.4


【解决方案1】:

write ->save() 在更新函数的末尾

Transport::find($id)
            ->update([
                'firstname' => $input['firstname'],
                'lastname' => $input['lastname'],
               ...
            ])->save();

【讨论】:

  • 你不需要在update方法上调用save,它是自动完成的。
【解决方案2】:

答案很简单,

我忘记在验证中添加一个项目。 所以现在它工作正常。

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多