簡體   English   中英

更新在 Laravel 8 的資源控制器中不起作用

[英]Update not working in Resource Controller for Laravel 8

以前,我嘗試了幾個小時來讓我的“destroy()”函數正常工作。 這對你們大多數人來說聽起來很荒謬,但只需將“方法(“DELETE”)”放在表單中就可以了,我仍然不知道為什么。

現在,我堅持使用 update() 函數。 一旦我點擊更新,頁面就會重新加載並且什么都不做。 它不會更新數據庫中的信息,也不會將我重定向回索引。 這是代碼:

路線(web.php):

Route::resource('books', BookController::class);

表格(Edit.blade.php)

@section('content')
    <div class="row">
        <div class="col-lg-12">
            <form action="{{ route('books.update', $book->id) }}" method="POST">
                @csrf
                @method('PUT')
            <div class="mb-3 mt-3">
                <label for="exampleFormControlInput1" class="form-label">Book Title</label>
                <input type="text" name="title" class="form-control" value="{{ $book->title }}">
              </div>
              <div class="mb-3">
                <label for="exampleFormControlTextarea1" class="form-label">Book Author</label>
                <input type="text" name="author" class="form-control" value="{{ $book->author }}" placeholder="Author Name..">
              </div>
              <div class="btn-group" role="group">
                <button type="submit" class="btn btn-block btn-danger">Update</button>
                <a href="{{ route('books.index') }}"><button type="button" class="btn btn-success">Go Back</button></a>
              </div>
            </form>
        </div>
    </div>
@endsection

控制器(BookController)

public function update(Request $request, Book $book)
{
    $validated = $request->validate([
        'title' => 'required|max:255|unique:books',
        'author' => 'required|max:255'
    ]);
    
    Book::where('id',$book->id)->update($validated);

    return redirect()->route('books.index')->with('message','Book Updated!');
}

我在這里做錯了什么? 一些幫助將不勝感激。

我認為問題在於您的獨特驗證。 當您不更改表單中的標題並點擊更新時,唯一驗證將失敗。 它失敗了,因為標題已經存在於數據庫中。 我們必須跳過對正在更新的資源的唯一驗證。

$validated = $request->validate([
    'title' => 'required|max:255|unique:books,title,'.$book->id,  // <-- change this
    'author' => 'required|max:255'
]);

$book->update( $request->only(['title', 'author']) );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM