在 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');


MMMHUHU
浏览 567回答 3
3回答

喵喵时光机

使用命名路线并为您的路线命名,我还修复了您的路线问题以接受 url 中的参数,我们必须使用{{ param_name}}它在您的情况下{{ id }}Route::post('post/{id}','StudInsertController@update')->name('update.student');然后以你的形式<form action="{{ route('update.student', $value[0]->id) }}" method="post">&nbsp; &nbsp;@csrf&nbsp; &nbsp;/**Your rest of html form*/</form>如果你不想使用命名路由,那么你可以使用urllaravel 的方法。&nbsp;<form action="{{ url('post/'.$value[0]->id) }}" method="post"> @csrf&nbsp;/**Your rest of html form*/</form>谢谢

达令说

表格中的动作是错误的。尝试这个: &nbsp;&nbsp;&nbsp;&nbsp;<form&nbsp;action="{{&nbsp;"/post/"&nbsp;.&nbsp;$value[0]->id&nbsp;}}"&nbsp;method="post">

隔江千里

在您的表单操作 URL 应该像<form&nbsp;action="{{&nbsp;'post/'.$value[0]->id&nbsp;}}"&nbsp;method="post">在你的路线文件中Route::post('post/{id}','StudInsertController@update');这将解决您的问题
打开App,查看更多内容
随时随地看视频慕课网APP