doujia6433 2015-06-11 08:03
浏览 159
已采纳

Laravel 5表单提交会创建一个错误MethodNotAllowedHttpException

I'm using Laravel 5. When editing a form a get this error

MethodNotAllowedHttpException

There are a few posts but I think it may be code specific. I'd rather not use the resource route methods if possible. Route:

    Route::get('profile/edit', array('as' => 'admin.profile.edit', 'uses' => 'ProfileController@edit'));
    Route::post('profile/edit', array('as' => 'admin.profile.update', 'uses' => 'ProfileController@update'));

The form is :

{!!Form::model($profile,array('method'=>'Patch','route' =>array('admin.profile.update'))) !!}

Controller:

public function update()
{
    $user_id=$this->user->id;
    $input=array_except(Input::all(),'_method');
    Profile::where('user_id','=',$user_id)->update($input);
    return Redirect::route('admin.profile.index');

}

Here is the error info:

n RouteCollection.php line 207
at RouteCollection->methodNotAllowed(array('GET', 'HEAD', 'POST')) in RouteCollection.php line 194
at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD', 'POST')) in RouteCollection.php line 142
at RouteCollection->match(object(Request)) in Router.php line 729
at Router->findRoute(object(Request)) in Router.php line 652
at Router->dispatchToRoute(object(Request)) in Router.php line 628
at Router->dispatch(object(Request)) in Kernel.php line 214
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 43
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 17
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 61
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in Kernel.php line 115
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 84
at Kernel->handle(object(Request)) in index.php line 53

Thanks any help appreciated

  • 写回答

2条回答 默认 最新

  • douhun8647 2015-06-11 08:11
    关注

    Can you change this:

    Route::post('profile/edit', array(
      'as' => 'admin.profile.update', 
      'uses' => 'ProfileController@update'
    ));
    

    To this:

    Route::patch('profile/edit', array(
      'as' => 'admin.profile.update', 
      'uses' => 'ProfileController@update'
    ));
    

    I think your form action may need a matching route verb

    http://laravel.com/docs/5.1/routing#basic-routing

    For the second issue:

    Column not found: 1054 Unknown column '_method' in 'field list' (SQL: update user_profile` set _method = PATCH, _token =
    

    Add this to the top of your controller

    use Illuminate\Http\Request;
    

    Then update your method as so:

    public function update(Request $request)
    {
        $user_id = $this->user->id;
    
        $input = $request->except('_method', '_token');
    
        Profile::where('user_id','=', $user_id)->update($input);
    
        return Redirect::route('admin.profile.index');
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染