2016-10-11 85 views
0

我是Laravel中的新成员,我试图创建一个应用程序。我创建了一个表单,并使用控制器将此表单存储到我的数据库中。表单有一个名为“Status”的下拉字段。如何更新laravel中的单个列

“状态”就像“类别”,所以我需要改变这一点,而不需要改变任何东西。我试图编写代码,但我做错了什么。你可以看到我下面的代码:

控制器:

public function show($id) 
    { 
     $servicedevice = DeviceService::findOrFail($id); 

     return view('device_service.show', compact('servicedevice', $servicedevice)); 
    }  

public function devicestatus(Request $request) 
     { 
      $devstat = DeviceService::FindOrFail($servicedevice->id); 
      $devstat->status_id = $request->device_id; 
      $devstat->save(); 

      return back(); 
     } 

查看:

  {!! Form::open(['action' => '[email protected]']) !!} 
      {!! Form::select('status_id', $statuslist, null, [ 
       'class' => 'js-example-basic-single', 
       'style' => 'width:50%' 
       ]) !!} 
      {!! Form::hidden('id', $servicedevice->id) !!} 
      {!! Form::submit('ok', ['class' => 'btn btn-sm btn-flat btn-warning']) !!} 
      {!! Form::close(); !!} 

路线:

Route::get('/devicestatus', '[email protected]'); 

当我试图改变 “状态”,返回以下错误

MethodNotAllowedHttpException in RouteCollection.php line 218: 

in RouteCollection.php line 218 
at RouteCollection->methodNotAllowed(array('GET', 'HEAD')) in RouteCollection.php line 205 
at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD')) in RouteCollection.php line 158 
at RouteCollection->match(object(Request)) in Router.php line 780 
at Router->findRoute(object(Request)) in Router.php line 610 
at Router->dispatchToRoute(object(Request)) in Router.php line 596 
at Router->dispatch(object(Request)) in Kernel.php line 267 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46 
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104 
at Pipeline->then(object(Closure)) in Kernel.php line 149 
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116 
at Kernel->handle(object(Request)) in index.php line 54 

你能帮我吗?

回答

0

错误消息和堆栈跟踪告诉你到底发生了什么:

MethodNotAllowedHttpException 
... 
RouteCollection->methodNotAllowed(array('GET', 'HEAD')) 

提交一个表单(默认情况下为POST方法),但你只能定义路由为Route::get

您需要将其更改为Route::any或将第二条路线Route::post更改为相同的URL,但使用不同的方法调用。

+0

我感到很蠢,因为没有多加注意。这很有效,非常感谢。 –

+0

@EmirianJaku没关系,只记得从异常中读取堆栈跟踪。通常这会告诉你发生了什么事情,或者至少让你指向正确的方向。例如,也许你不知道解决方案在这里,但至少你会知道问题出在路由上,而不是更新列。 – andrewtweber