2017-06-28 5 views
-1

Ich benutze Laravel 5.0, ich muss Modelle online/offline einstellen. Ich benutze eine Toggle-Checkbox aus Bootstrap:Set online oder offline

<td> 
<input onchange="window.location.href='/changestate'" type="checkbox" checked data-toggle="toggle" data-on="Online" data-off="Offline" data-size="mini" > 
</td> 

meine Funktion in meinem Controller:

public function changeState($id) 
{ 

if (checked === "Online") { 
    $job->confirmed=1; 
    $job->save(); 
} else if (checked ==="Offline") { 
     $job->confirmed=0; 
     $job->save(); 
} 
return redirect('/'); 
} 

und eine Route für meine Funktion:

Route::get('/changeState/{id}','[email protected]'); 

ich die boolean in meiner Datenbank True gesetzt oder Falsch/Online oder Offline

Kann mir jemand helfen?

+0

Was das Problem zu sein scheint? – Jerodev

+0

passiert nichts in meiner Datenbank. Ich setze neue Modelle automatisch. wahr in meiner Datenbank. Aber wenn ich "Offline von Online" wechsle bekomme ich einen Fehler und nichts passiert in meiner Datenbank. MethodNotAllowedHttpException in RouteCollection.php Zeile 207: –

+0

'if (checked ===" Online ") {' was ist in diesem "überprüft"? –

Antwort

0

Wie das für mich aussieht, aktualisieren Sie die Seite jedes Mal, wenn Sie klicken, aber indem Sie die Checkbox vordefinieren, werden sie, wenn der Code funktionieren sollte, diese immer in der DB deaktivieren.

Sie geben keine $id in die URL, deshalb wird job nicht geladen. Überprüft wird nicht definiert angezeigt, die Variable ist nicht festgelegt.

Der Versuch, es mit Inline-JS zu tun, ist nicht effizient. Ich gehe davon aus, dass Sie jQuery geladen haben, und wenn Sie es nicht getan haben, schlage ich Ihnen sehr vor, dass Sie für die Einfachheit und das einfache Senden von Daten tun.

Die folgende Antwort ist nur ein grundlegendes Umschreiben von dem, was Sie COULD tun können, um das erwartete Ergebnis zu erzielen.

// Checkbox

<td> 
    <input class="changeStatus" data-modelid="{{ $model->id }}" 
    type="checkbox" {{ ($model->confirmed == 1) ? 'checked' : '' }} 
    data-toggle="toggle" data-on="Online" data-off="Offline" 
    data-size="mini" 
    > 
</td> 

// js

<script> 
$('.changeStatus').change(function() { 
    var modelId = $(this).data('modelid'); 
    var checked_status = $(this).prop('checked'); 
    var checked; 
    if(checked_status == true) checked = 1; else checked = 0; 
    $.ajax({ 
     url: '/changestate/'+modelid+'?checked='+checked, 
     type: 'get' 
    }); 
}); 
</script> 

// Controller

use Illuminate\Http\Request; 
public function changeState(Request $request, $id) 
{ 
    if($request->query('checked')) { 
     if($request->query('checked') == 1 || $request->query('checked') == 0) { 
      $job = Model::find($id); 
      $job->confirmed = $request->query('checked'); 
      $job->save(); 
     } 
    } 
} 
Verwandte Themen