此路由不支持 POST 方法()

The POST method is not supported for this route()

我有这个基本错误,但我无法修复它...请问有什么帮助吗?

这是我的观点,我尝试使用标记@csrf 以及@csrf-field 和标记。 我试着写 Post、post、POST。 (prat.store 运行良好,问题是更新。)

@if(isset($ModificationMode))

<form method="post" action="{{route('prat.update', $DataPraticien ?? '')}}">
    @csrf
    @else
    <form action="{{route('prat.store')}}" method="post">
        @endif

//stuff
//stuff
/lalala


@if(isset($ModificationMode))
    <button type="submit" class="btn btn-warning">Modifier Praticien</button>
    @else
    <button type="submit" class="btn btn-success">Ajouter Praticien</button>
    @endif

我的控制器:

public function update(Request $request, $id)
    {
      $ModifPrat= Praticien::find($id);

      $ModifPrat->NOM = $request->input('NOM');
      $ModifPrat->ETAT_CIVIL = $request->input('ETAT_CIVIL');
      $ModifPrat->NOTE = $request->input('NOTE');
      $ModifPrat->NOTORIETE = $request->input('NOTORIETE');
      $ModifPrat->MENBRE_ASSOCIATION = $request->input('MEMBRE_ASSOCIATION');
      $ModifPrat->DIPLOME = $request->input('DIPLOME');
      $ModifPrat->save();
       return redirect()->route('homeAdmin', auth()->id());

    }

我的路线是基础资源:

Route::resource('prat', 'PratController');

注意:变量 ModificationMode 是一种将同一页面用于两个不同任务的方法。我用 var_dump 调试它,变量设置好,我的 prat.update 被检测到。

谢谢 ;)

如果您要修改,请使用此

<form action="/foo/bar" method="POST"> <input type="hidden" name="_method" value="PATCH"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> </form>

可以参考Form Method Spoofing or Resource Controllers

查看 documentation for ResourceControllers。有一个 table 解释了 Laravel 如何将控制器方法映射到请求类型。基本上,您需要使用 @method 指令(或手动添加隐藏输入)。因此,您的表单应如下所示:

<form action="{{ route('prat.update') }}" method="POST">
    @method('PUT')
    //...
</form>