【问题标题】:Delete a record gave me NotFoundException in laravel 5在 laravel 5 中删除一条记录给了我 NotFoundException
【发布时间】:2016-12-30 12:49:22
【问题描述】:

如何为同一路由创建多个请求,如下所示。

Route.php

Route::get('/home', 'HomeController@index');//->middleware('auth');
Route::get('/home/{$user}','HomeController@showStudent');
Route::delete('/home/{$studentId}','HomeController@deleteStudent');

在我添加删除请求之前,表单工作正常。在我的刀片模板中,我有类似这样的代码。

home.blade.php

  <form class="" role="form" method="DELETE" action="/home/{{$student->id}}">
                            {{ csrf_field() }}
                            <td><button type="submit" class="btn btn-primary pull-right">Remove Student</button></td>
                            </form>

我相信由于相同的路由,它会显示 NotFoundHTTPException。

在一条路线 /home 上,我尝试使用不同的按钮添加、显示、编辑和删除记录。

提前致谢。

【问题讨论】:

    标签: php laravel-5 routes


    【解决方案1】:

    你可以添加一个表单并使用 Laravel 的表单方法欺骗

    <input type="hidden" name="_method" value="DELETE">
    

    在这里查看更多...http://laravel.com/docs/master/routing#form-method-spoofing

    尝试如下......

     <form class="" role="form" method="DELETE" action="/home/{{$student->id}}">
     <input type="hidden" name="_method" value="DELETE">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">           
     <td><button type="submit" class="btn btn-primary pull-right">Remove Student</button></td>
     </form>
    

    【讨论】:

    • 我已经尝试过了,但没有成功。它仍然向我显示相同的未找到异常。
    • resource controller..laravel.com/docs/5.3/controllers#resource-controllers` 用于 CRUD 操作...无需为每个操作指定 routes..
    • 非常感谢。我已删除所有主控制器路径并添加了
    • @vsoni 欢迎并享受..如果答案有用请接受它。谢谢。
    • 我添加了 Route::resource('home','HomeController');在我的路线文件中。
    【解决方案2】:

    1) 更改路线:

    Route::delete('/home/{$studentId}','HomeController@deleteStudent');
    

    收件人:

    Route::get('/delete/{$Id}','HomeController@deleteStudent')->name('delete');
    

    2) 更改表单标签:

    <form class="" role="form" method="DELETE" action="/home/{{$student->id}}">
    

    收件人:

    <form class="" role="form" method="get" action="route('delete', ['id' => $student->id])">
    

    【讨论】:

      【解决方案3】:

      HTML 表单不支持getpost 以外的方法。如果你需要模拟它,包括一个隐藏的输入来模拟delete

      <input name="_method" type="hidden" value="DELETE">
      

      然后在您的代码中,将其更新为:

      <form class="" role="form" method="POST" action="/home/{{$student->id}}">
          {{ csrf_field() }}
          <input name="_method" type="hidden" value="DELETE">
          <td><button type="submit" class="btn btn-primary pull-right">Remove Student</button></td>
      </form>
      

      参考:

      【讨论】:

      • 他要删除,但是……你只是从 laravel 网站 &lt;input name="_method" type="hidden" value="PUT"&gt;.wrong answer 复制。
      • 哇..像这样被降职..你们太残忍了,从来不给我们机会..
      猜你喜欢
      • 2016-02-14
      • 2016-06-10
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      相关资源
      最近更新 更多