Laravel删除按钮抛出错误“页面无法找到

问题描述:

这是我的代码Laravel删除按钮抛出错误“页面无法找到

视图

<form action="/categories/ {{ $category->id }}" method="POST"> 
    {{ csrf_field() }} 
    {{ method_field('DELETE') }} 

    <button>Delete Task</button> 
</form> 

控制器方法

public function destroyCategory($id) 
{ 

    Categories::findOrFail($id)->delete(); 

    return redirect('/categories'); 
} 

路线

Route::post('categories','[email protected]'); 

表在局部看来,可以问题

+0

您的表单的action属性的空间。 – jcorry

您发送您的形式DELETE方法,但你抓住它作为post而不是deleteroute文件&里面还有你在自己route文件分配URL参数。

<form action="/categories/{{ $category->id }}" method="POST"> 
    {{ csrf_field() }} 
    {{ method_field('DELETE') }} 

    <button type="submit">Delete Task</button> 
</form> 

route.php

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

/categories后有空间,你不用提交按钮:

<form action="/categories/{{ $category->id }}" method="POST"> 
    {{ csrf_field() }} 
    <input name="_method" type="hidden" value="DELETE"> 
    <input class="btn btn-danger" type="submit" value="Delete Task"> 
</form> 

或用Laravel集体形式:

{!! Form::open(['method' => 'Delete', 'route' => ['task.delete', $category->id]) !!} 
{!! Form::submit('Delete Task') !!} 
{!! Form::close() !!} 

此外,您正在使用post路线而不是delete。而且,正如@Rimon汗说,你不抓一个类别的ID:

Route::delete('categories/{id}', ['as' => 'task.delete', 'uses' => '[email protected]']); 

你可以这样说:

你的路线应该是这样的:

Route::post('categories/{id}','[email protected]')->name('delete_categories'); 

控制器应该是这样的:

public function destroyCategory($id) 
{ 
    Categories::findOrFail($id)->delete(); 
    return redirect()->to('/'); 
} 

和HTML会是这样的:

<form action="{{ route('delete_categories', ['id' => $category->id]) }}" method="POST"> 
    {{ csrf_field() }} 
    {{ method_field('DELETE') }} 

    <button type="submit">Delete Task</button> 
</form> 

希望这有助于