2017-08-06 52 views
1

我想使用Laravel的(5.3)銷燬方法來刪除一個對象,當我按下按鈕,但是我得到一個MethodNotAllowedHttpException。Laravel 5.3刪除方法給出的方法notAllowed與欺騙

我的路線是

Route::delete('/admin/add/{id}', '[email protected]'); 

的銷燬方法是

public function destroy($id) 
{ 
    $items = Item::where('id', $id)->get(); 
    foreach ($items as $item) 
     $item->delete(); 
    return redirect('/admin/add'); 
} 

我的形式是

<form action="{{ url('admin/add/'.$specific->id)}}" method="POST"> 
    {{ method_field('DELETE') }} 
    {{ csrf_field() }} 
    <div class="modal-footer no-border"> 
    <button type="submit" class="btn btn-primary">Delete</button> 
    </div> 
</form> 

我檢查了現有的路由(PHP工匠路線:列表),以及刪除一個正在顯示:

DELETE | admin/add/{id} |   | App\Http\Controllers\[email protected] 

,我得到的錯誤是

in RouteCollection.php line 218 
at RouteCollection->methodNotAllowed(array('GET', 'HEAD', 'POST')) in RouteCollection.php line 205 
at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD', 'POST')) in RouteCollection.php line 158 
at RouteCollection->match(object(Request)) in Router.php line 766 
at Router->findRoute(object(Request)) in Router.php line 621 
at Router->dispatchToRoute(object(Request)) in Router.php line 607 
at Router->dispatch(object(Request)) in Kernel.php line 268 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46 
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104 
at Pipeline->then(object(Closure)) in Kernel.php line 150 
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 117 
at Kernel->handle(object(Request)) in index.php line 53 
at require('/Users/username/Sites/blades/public/index.php') in server.php line 133 

%的Laravel路由的說明,我使用的是形式和欺騙使用POST方法刪除的行爲,但我仍然得到一個例外。任何幫助,將不勝感激。

注意:我跟在https://laravel.com/docs/5.2/quickstart-intermediate完整的例子,它工作得很好。我試圖在不同的項目中重現這一點是什麼導致了這個問題。

+0

你能檢查生成的HTML嗎?畢竟,您的表單看起來像是發回POST請求。 –

+0

它似乎正在發送POST請求。我在上面添加了更新,因爲我發現了一些相當奇怪的東西。 – abe678

回答

0

我發現了這個問題。此表單所在的頁面上有一個不同的POST表單,並且我用</div>而不是</form>標籤關閉了表單。正因爲如此,它試圖同時提交這兩個表單,而且POST調用是衝突的。

0

請檢查一下$specific->id是否爲空,如dd($specific->id),在瀏覽器中打開開發者控制檯並打開網絡頁面,並檢查哪個url是正確的。

+0

我檢查了,$ specific-> id肯定不是null。 – abe678