2016-03-08 56 views
0

我試圖使用引導模式中的窗體來更新我的表中的現有行。但是當我嘗試時沒有任何變化。我有一張帶有汽車列表的html表格,每行都有一個按鈕「更改狀態」,該按鈕用id="myModal_{{ $car->id }}"打開引導程序模式,並使用其中的窗體編輯正在維修的汽車的狀態。Laravel 5更新數據庫中的現有文件

這裏是我的模式:在CarController

<!-- Modal --> 
<div class="modal fade" id="myModal_{{ $car->id }}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
    <div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
     <h4 class="modal-title" id="myModalLabel">Breyta stöðu bíls</h4> 
     </div> 
     <div class="modal-body"> 
     <div class="form-group"> 
      <h3>Breyta stöðu fyrir {{ $car->LicencePlate }}</h3> 
     </div> 
      {!! Form::open(['url' => 'create']) !!} 

       <div class="form-group"> 
       {!! Form::label('Status', 'Status: ') !!} 
       {!! Form::select('Status', [ 
            null => ' -- Veldu Stöðu bíls -- ', 
            'Í Biðröð' => 'Í Biðröð', 
            'Í Viðgerð' => 'Í Viðgerð', 
            'Tilbúinn' => 'Tilbúinn' 
            ], null, ['class' => 'form-control']) !!} 
       </div> 
       <div class="form-group"> 

       </div> 

     </div> 
     <div class="modal-footer"> 
     <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
     {!! Form::submit('Skrá stöðu', ['class' => 'btn btn-primary']) !!} 
     </div> 
     {!! Form::close() !!} 
    </div> 
    </div> 
</div> 

更新方法:

public function CarEdit($id, Requests\CreateCarsRequest $request) 
{ 
    $edit = Car::update($request->all()); 
    return redirect::back(); 
} 

去給那個方法:

Route::post('/dashboard', '[email protected]'); 
+0

明確傳遞的字段總是一個好主意。你可以這樣做:'$ request-> only('field_1,'field_2,'etc)' –

回答

0

我能夠和我的同事們的幫助下解決這個問題。我所做的是創建了一個名爲UpdateCarRequest的新請求,其中LicencePlate字段不是唯一的。並編輯我的方法,如下所示:

public function CarEdit(Requests\UpdateCarRequest $request) 
{ 
    $edit = Car::where('LicencePlate', '=', $request->LicencePlate)->first(); 
    $edit->update($request->all()); 
    return redirect('/dashboard'); 
} 

我還在表單中添加了一個隱藏字段,其值爲$car->LicencePlate

1

你應該這樣做:

['action' => '[email protected]'] 

而且,你用mass assignment,所以你必須填寫$fillable陣列在Car模型,使其工作: https://laravel.com/docs/5.1/eloquent#mass-assignment

+0

我想你是指:'['action'=>'CarController @ CarEdit']' 謝謝,它有幫助。 –

+0

你說得對,對不起。在這種情況下,它當然應該是「行動」。你也可以使用'url'作爲路由的URL和'route'。所有這些方法將與Laravel Collective表單一起使用。 –