Laravel - 删除按钮

时间:2016-12-17 21:28:26

标签: laravel

欢迎!我是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

3 个答案:

答案 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}不是:iduses没有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。

希望为您工作:)\