欢迎!我是laravel的新手,我有问题。我启动我的私人项目,我想使用删除按钮(简单的待办事项应用程序)从数据库中删除查询。当我点击它时它不会删除但只会将我重定向到此查询的ID。不知道该怎么办。有人能帮助我吗?
此致 tomczas
家庭控制器中的破坏功能
public function destroy($id)
{
$todo = Todo::findOrFail($id);
$todo->delete();
return back();
}
家用刀片
@foreach($todos as $todo)
<ul class="todo-list">
<li>
<!-- drag handle -->
<span class="handle">
<i class="fa fa-ellipsis-v"></i>
<i class="fa fa-ellipsis-v"></i>
</span>
<!-- checkbox -->
<input type="checkbox" value="">
<!-- todo text -->
<span class="text">{{$todo->tytul}}</span>
<!-- Emphasis label -->
<small class="label label-danger"><i class="fa fa-clock-o"></i> {{$todo->czas}}</small>
<!-- General tools such as edit or delete-->
<div class="tools">
<i class="fa fa-edit"></i>
{{Form::open([ 'method' => 'DELETE', 'route' => [ 'home.destroy', $todo ] ])}}
{{ Form::hidden('id', $todo->id) }}
{{Form::button('<i class="fa fa-trash-o"></i>', array('type' => 'submit', 'class' => ''))}}
{{ Form::close() }}
<i class="fa fa-trash-o"></i>
</div>
</li>
</ul>
@endforeach
答案 0 :(得分:2)
修复表单:
{{Form::open(['method' => 'DELETE', 'route' => ['home.destroy', $todo->id]])}}
并且不需要:
{{ Form::hidden('id', $todo->id) }}
... laravel做了所有魔法
P.S。确保您已创建资源路由以使家庭控制器充当REST控制器。
额外的,观看此视频:https://www.youtube.com/watch?v=6pjPXOwKzJM
另一种做删除功能的方法是 -
您可以创建一些路线:
Route::get('home/{id}/delete', ['uses' => 'HomeController@destroy', 'as' => 'home.delete']);
并且在这种情况下不需要表格:
<div class="tools">
<i class="fa fa-edit"></i>
<a href="{{route('home.delete', $todo->id)}}?{{time()}}">
<i class="fa fa-trash-o"></i>
</a>
</div>
附:阅读你的路线后,我也看到了核心问题:
Route::resource('home', 'HomeController@index');
应该是(阅读this):
Route::resource('home', 'HomeController');
答案 1 :(得分:-1)
好的第二个想法很有效但拼写错误:
应该是:
Route::get('/home/{id}/delete', ['uses' => 'HomeController@destroy', 'as' => 'home.delete']);
所以{id}
不是:id
而uses
没有use
非常感谢您的帮助!
答案 2 :(得分:-1)
在新版本的laravel 5.6中,laravel建议使用下面的代码删除一行
<form method="post" action={{ route('yourControllerDeleteMethodName'), ['yourRowName'=> $yourRowName->slug] }}>
<input type="hidden" value="DELETE"/>
<button type="submit">click to delete</button>
</form>
如果使用id来获取行,则使用slug来获取行,仅写$ id而不是slug。
希望为您工作:)\