搜尋
首頁php框架Laravellaravel新增不能編輯怎麼回事

最近在使用 Laravel 框架開發專案時,發現一個問題:新增的資料無法編輯。在進一步排查和分析之後,我發現了問題所在並解決了這個問題。下面就分享一下解決思路。

首先,我們需要先明確一個概念-HTTP 請求方法。 HTTP 請求方法是指客戶端在向伺服器要求資源時所使用的方法,包括 GET、POST、PUT、DELETE 等。其中,GET 方法用於取得資源,POST 方法用於建立資源,PUT 方法用於更新資源,DELETE 方法用於刪除資源。

在Laravel 中,使用表單提交時,預設請求方法是POST,例如:


         

然後,我們在控制器中使用store 方法來處理這個請求:

public function store(Request $request)
{
    $user = new User;
    $user->name = $request->input('name');
    $user->save();
    return redirect('/user');
}

在上面的程式碼中,我們建立了一個新的User 對象,將表單提交的name 欄位賦值給User 物件的name 屬性,然後儲存資料並重定向到/user 頁面。

但是,上述程式碼有時候會出現一個問題:新增的資料無法編輯。我們在存取編輯頁面時,會發現頁面中沒有原先建立的資料資訊。這是為什麼呢?我們可以先看一下編輯頁面的程式碼:


id }}" method="POST">     {{ method_field('PUT') }}     name }}">     

在這個程式碼中,我們使用了method_field 方法來指定請求方法為PUT,因為在HTTP 協定中,更新資源需要使用PUT 方法。但是,在 Laravel 框架中,預設的 POST 請求是無法識別 PUT 請求的,因此,在存取編輯頁面時,Laravel 會根據預設的 POST 請求來處理,而不是按照我們期望的 PUT 請求來處理。

解決這個問題的想法有兩個:一是使用 PUT 請求方法來建立資料;二是在使用 POST 方法建立資料時,使用 _method 參數來指定請求方法。

第一種解決想法是比較乾脆的方法,但是需要改變較多的程式碼。我們需要在表單中使用PUT 請求方法:


id }}" method="POST">     {{ method_field('PUT') }}          name }}">     

然後,在控制器中處理PUT 請求:

public function update(Request $request, $id)
{
    $user = User::findOrFail($id);
    $user->name = $request->input('name');
    $user->save();
    return redirect('/user');
}

使用這種方式,我們需要在表單中指定採用PUT 方法,並且需要傳遞一個_token 參數來防止CSRF 攻擊,這會增加不少的程式碼工作量。

第二種解決思路則簡單得多。我們需要在表單中使用POST 方法,但是在提交時加上_method 參數指定請求方法為PUT:


id }}" method="POST">               name }}">     

然後,在控制器中處理POST 請求時,使用method方法來識別PUT 請求:

public function update(Request $request, $id)
{
    $user = User::findOrFail($id);
    $user->name = $request->input('name');
    $user->save();
    return redirect('/user');
}

使用這種方式,我們只需要在表單中加上一個_method 參數即可,可讀性較高,程式碼工作量少。

在開發 Laravel 專案的過程中,遇到問題是必然的,解決問題需要我們耐心和細心,以及對框架和技術的深入理解和掌握。希望本文能為讀者提供一些參考與協助。

以上是laravel新增不能編輯怎麼回事的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新的Laravel版本:DIFES DISCON最新的Laravel版本:DIFES DISCONMay 12, 2025 am 12:15 AM

Laravel10IntroducessEveralKeyFeatUrestHatenHanceWebDevelopment.1)LazyCollectionsAllyCollefficeProcesingOflargeFlargedAtasetSwithSwithOutloadingAllRecordSintomeMemory.2)the Make:Model Model Moged-and-Mogration'ArtisanCommandSancancMommandSimplififieScreatingModeltigation.3)

Laravel遷移解釋了:創建,修改和管理您的數據庫Laravel遷移解釋了:創建,修改和管理您的數據庫May 12, 2025 am 12:11 AM

laravelmigrationssshouldbeusedbecausetheystreamlinedeplupment,nesurecresistencyAcrossenviments和simplifyCollaborationAndDeployment.1)shemallogragrammatonofdatabaseschemachanges,ReeducingErrors.2)MigrigationScanBeverCanbeverSionConconconconcontrollin.2)

Laravel遷移:值得使用嗎?Laravel遷移:值得使用嗎?May 12, 2025 am 12:10 AM

是的。

Laravel:軟刪除了性能問題Laravel:軟刪除了性能問題May 12, 2025 am 12:04 AM

SoftDeletesinLaravelimpactperformancebycomplicatingqueriesandincreasingstorageneeds.Tomitigatetheseissues:1)Indexthedeleted_atcolumntospeedupqueries,2)Useeagerloadingtoreducequerycount,and3)Regularlycleanupsoft-deletedrecordstomaintaindatabaseefficie

Laravel遷移對什麼有益?用例和福利Laravel遷移對什麼有益?用例和福利May 11, 2025 am 12:14 AM

Laravelmigrationsarebeneficialforversioncontrol,collaboration,andpromotinggooddevelopmentpractices.1)Theyallowtrackingandrollingbackdatabasechanges.2)Migrationsensureteammembers'schemasstaysynchronized.3)Theyencouragethoughtfuldatabasedesignandeasyre

如何在Laravel中使用軟刪除:保護您的數據如何在Laravel中使用軟刪除:保護您的數據May 11, 2025 am 12:14 AM

Laravel的軟刪除功能通過標記記錄而非實際刪除來保護數據。 1)在模型中添加SoftDeletestrait和deleted_at字段。 2)使用delete()方法標記刪除,使用restore()方法恢復。 3)查詢時使用withTrashed()或onlyTrashed()包含軟刪除記錄。 4)定期清理超過一定時間的軟刪除記錄以優化性能。

Laravel遷移是什麼,您如何使用它們?Laravel遷移是什麼,您如何使用它們?May 11, 2025 am 12:13 AM

laravelmigrationSareversionControlfordatabaseschemas,允許Roducibleandreversiblechanges.tousethem:1)creatighatsanmake:遷移',2)定義chemachangesinthe'up()

Laravel遷移:回滾行不通,發生了什麼事?Laravel遷移:回滾行不通,發生了什麼事?May 11, 2025 am 12:10 AM

Laravelmigrationsmayfailtorollbackduetodataintegrityissues,foreignkeyconstraints,orirreversibleactions.1)Dataintegrityissuescanoccurifamigrationaddsdatathatcan'tbeundone,likeacolumnwithadefaultvalue.2)Foreignkeyconstraintscanpreventrollbacksifrelatio

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。