亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 在編輯路線上返回 404 (Laravel 6.11.0)

Laravel 在編輯路線上返回 404 (Laravel 6.11.0)

PHP
森欄 2022-08-19 16:00:51
我創建了以下路由。Route::resource('admin/products/', 'ProductsController')->middleware('auth');我已經使用Artisan創建了一個包含所有方法(索引,創建,編輯等)的控制器。當我使用命令php artisan route:list時,我得到以下路線(其中包括):GET|HEAD  | admin/products/{}/edit | edit   | App\Http\Controllers\ProductsController@edit   | web,auth|DELETE    | admin/products/{}      | destroy| App\Http\Controllers\ProductsController@destroy| web,auth|這是可以預料的。但是當我添加到鏈接href時,鏈接是正確生成的,但是當我點擊它時,我得到了404頁面。同樣的情況是,當我使用表單發布來銷毀時(我已經創建了一個表單,我仍然得到404。{{ route('edit', $product->id) }}action="{{ route('destroy', $product->id) }}"@method('DELETE')任何幫助,我應該開始尋找解決方案將不勝感激。
查看完整描述

2 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

在代碼中

GET|HEAD  | admin/products/{}/edit

應該用一個值填充,類似于{}{item}

如果在控制器方法中,您有如下代碼:ProductsController@edit

public function edit(Request $request, Item $item){
}

第二個參數應該 1) 存在,2) 應該與路由 {variable} 中的值匹配,所以如果你在方法參數中有變量,那么它應該是Item $item{item}item{something}public function edit(Request $request, Item $something);...

請注意,請求$request,在方法中不是必需的;

我想補充一點,如果找不到該項目,這樣做將導致404,該項目將根據該項目模型中的方法獲取,因此,如果您的物品中有類似的東西Item $itemgetRouteKeyName()model

public function getRouteKeyName()    {
        return 'slug';
    }

該列將從數據庫中讀取該項目。同樣,如果您沒有使用該方法,它將使用ID。slug

因此,總而言之,whould在那里與您的控制器的該模型的參數相匹配,其中默認情況下是產品模型的ID,除非您定義方法,否則該模型是Eloquent模型web{some_value}Product $some_valuesome_valuegetRouteKeyName()Products

Laravel Controllers Dependency Injection希望能解決它!


查看完整回答
反對 回復 2022-08-19
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

正如Harven所建議的那樣,問題在于資源路由沒有正確定義。刪除反斜杠后,一切開始工作:

Route::resource('admin/products', 'ProductsController')->middleware('auth');

在此之后,路由列表已正確填寫,并且路由名稱也已正確生成

| GET|HEAD| admin/products/{product}/edit | products.edit | App\Http\Controllers\ProductsController@edit | web,auth |


查看完整回答
反對 回復 2022-08-19
  • 2 回答
  • 0 關注
  • 209 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號