【问题标题】:Delete record MethodNotAllowedHttpException删除记录 MethodNotAllowedHttpException
【发布时间】:2018-09-15 02:07:42
【问题描述】:

我正在尝试从 Db 我得到了不允许的方法: 家庭控制器

public function index()
    {
        $YourData = DB::table('packages')
            ->join('users', 'users.id', '=', 'packages.user_id')
            ->select('users.name as username','packages.*',DB::raw('SUM(packages.entry_nr) as entries'))
            ->where('users.id', Auth::id())
            ->get();


             $id =Auth::user()->id;
            $lesson = DB::select("
            SELECT *
            FROM lessons t
            inner join bookings b
            on b.lessons_id =t.id
            where b.user_id = ".$id."
            and t.date > now() 
            ");
            return view('home') ->with('YourData', $YourData)
                                ->with('lesson', $lesson);

    }
public function destroy($lessonId,$authId)
{    $book= Booking::where('lessons_id',$lessonId)
        ->where('user_id',$authId)
        ->delete();

    return redirect()->action('HomeController@index');
}

我的表格是这样的

<form method="post" class="table_content_form">
        <form  method="post" action="{{action('HomeController@destroy', $ls->id, Auth::user()->id)}}">
          {{ csrf_field() }}
                <input name="_method" type="hidden" value="DELETE">
          <button class="btn btn-outline-danger" type="submit" >Rimuovi</button>
        </form>

我的路线Route::delete('/delete/','HomeController@destroy');

提前致谢!我正在逐步学习!

【问题讨论】:

  • 你的路线代码是什么
  • @afsalc code Route::get('/home', 'HomeController@index')-&gt;name('home');
  • @Option 这些是我仅有的两条路线code Route::delete('/delete/','HomeController@destroy');
  • 我注意到你已经包含它所以删除了我的评论并为你提供了答案:)

标签: php mysql laravel


【解决方案1】:

你应该试试这个:

Route::post('/delete/{id}/{userId}','HomeController@destroy')->name('deletedata');

public function destroy($lessonId,$authId)
{    $book= Booking::where('lessons_id',$lessonId)
        ->where('user_id',$authId)
        ->delete();

    return redirect()->action('HomeController@index');
}

<form method="post" class="table_content_form">
        <form  method="post" action="{{route('deletedata', [$ls->id, Auth::user()->id])}}">
          {{ csrf_field() }}
                <input name="_method" type="hidden" value="DELETE">
          <button class="btn btn-outline-danger" type="submit" >Rimuovi</button>
        </form>

更新答案 ::

在你的路由文件中发生变化。

Route::post('/delete/{id}','HomeController@destroy')->name('deletedata');

在您的控制器文件中更改。

public function destroy($lessonId)
{    
$user_id = Auth::user()->id;
$book= Booking::where('lessons_id',$lessonId)
        ->where('user_id',$user_id)
        ->delete();

    return redirect()->action('HomeController@index');
}

在您的表单更改中

        <form  method="post" action="{{route('deletedata', $ls->id)}}">
          {{ csrf_field() }}
                <input name="_method" type="hidden" value="DELETE">
          <button class="btn btn-outline-danger" type="submit" >Rimuovi</button>
        </form>

【讨论】:

  • “类型错误:函数 App\Http\Controllers\HomeController::destroy() 的参数太少,通过了 0 个,预期正好 2 个”
  • @Jonathan:让我检查一下
  • 抱歉,找不到您要查找的页面。
  • @Jonathan:您的记录是否被删除?
  • 不,即使在表格中,我也没有刷新页面
【解决方案2】:

尝试使用route()method_field('DELETE') 并在控制器中接收$request 变量 你的表格应该是这样的

<form action="{{ route('Booking.destroy',$ls->id) }}" method="POST">
    {{ csrf_field() }}
    {{ method_field('DELETE') }}
    <button class="btn btn-danger" type="submit">Delete
    </button>
</form>

你的路线应该是这样的

Route::post('/delete/{$id}','HomeController@destroy')->name('Booking.destroy');

你的控制器应该是

public function destroy(Request $request,$lessonId){
    $id =Auth::user()->id;
    $book= Booking::where('lessons_id',$lessonId)
    ->where('user_id',$id)
    ->delete();
    //Or you should try 
    //$book=Booking::destroy($lessonId);
    $request->session()->flash('message','Product deleted successfully');
    return redirect()->action('HomeController@index');
}

【讨论】:

  • 告诉我找不到 url 页面
  • localhost:8000/delete/5
  • 重置你的路由和缓存
  • 运行这些命令 php artisan route:clear,php artisan cache:clear,然后重启服务器
猜你喜欢
  • 2014-11-06
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多