首页 > 解决方案 > 在 laravel 中,该路由不支持 POST 方法。支持的方法:GET、HEAD Plz

问题描述

当我更新值时,我是 Laravel 的新手,然后我遇到了这个问题。Laravel 的消息是

“此路线不支持 POST 方法。支持的方法:GET、HEAD”。

我也使用这些方法(@csrf_field{{ method_field('PUT') }}),但结果为零。

HTML 表单

 <form action="{{ $value[0]->id }}" method="post">
     <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

    <h1>This Is Update Form</h1>

    <table border="1" id="customers">

        <tr>

     <td>Name</td>

     <td>
       <input type="text" name='name' value="{{ $value[0]->name }}">
     </td> 
    </tr>

     <tr>
     <td>Email</td>

     <td>
       <input type="text" name='email' value="{{ $value[0]->email }}">
     </td> 

     </tr>

     <tr>

       <td colspan="2">
         <input type="submit" value="Submit">
       </td>

     </tr>

    </table>
 </form>

控制器

 public function showid($id)
 {
    $data =DB::select('select * from student where id =?',[$id]);
      //DB::table('student')->pluck('id');
    return view('std_edit',['value'=> $data]);
 }

 public function update(Request $request, $id)
 {

    //$data = DB::table('student')
    //->where('id', $data['id'])
    //->update(['name'=>$data['name'], 'email'=>$data['email'] ]);
    $name = $request->input('name');
    $email = $request->input('email');
    DB::update('update student set name = ? email = ? where id = ?',[$name,$email,$id]);
     return redirect()->action('StudInsertController@retrieve');
      echo "Record updated successfully.<br/>";
     //$update = \DB::table('student') ->where('id', $data['id'])->update( [ 'name' => $data['name'],'email' => $data['email'] ]);



 }

路线

 Route::get('edit/{id}','StudInsertController@showid');
 Route::post('post/id','StudInsertController@update');

标签: phplaravelversion

解决方案


使用命名路由并为您的路由命名,并且我已经修复了您的路由问题以接受我们必须使用的 url 中的参数{{ param_name}},在您的情况下是{{ id }}

Route::post('post/{id}','StudInsertController@update')->name('update.student');

然后以你的形式

<form action="{{ route('update.student', $value[0]->id) }}" method="post">
   @csrf

   /**Your rest of html form*/

</form>

如果你不想使用命名路由,那么你可以使用urllaravel 的方法。

 <form action="{{ url('post/'.$value[0]->id) }}" method="post"> @csrf

 /**Your rest of html form*/

</form>

谢谢


推荐阅读