2016-12-03 4 views
0

Ich verwende addmissions Funktion, um Werte in der Berechtigungstabelle zu speichern.Wie validiert Daten einfügen in Tabelle in Laravel 5.2

public function addPermission(Request $request, $id, Permission $permission) 
{ 
    $this->validate($request, [ 
     'status' => 'required' 
    ]); 

    $permission = new Permission; 

    $permission->status = $request->input('status'); 
    $permission->project_id  = $id; 
    $permission->collaborator_id = $request->input('cid'); 
    $permission->save(); 
    return redirect()->back()->with(
     'info', 
     'Permission has been added to your Collaborator successfully' 
    ); 
} 

das ist mein permiisionadd form action

<form class="form-vertical" role="form" method="post" 
    action="{{ route('projects.collaborators.permission', $project->id,$collaborator->id) }}"> 

    <input type="hidden" id="cid" name="cid" value="{{ $collaborator->user()->first()->id }}" /> 
    <div class="form-group{{ $errors->has('status') ? ' has-error' : '' }}"> 
    <label for="status" class="control-label">Choose Permission</label> 
    <select name="status" id="status"> 
    <option value="">Choose a status</option> 
    <option value="3">View Only</option> 
    <option value="2">Edit Tasks</option> 
    <option value="1">Admin</option> 
    </select> 
    @if ($errors->has('status')) 
    <span class="help-block">{{ $errors->first('status') }}</span> 
    @endif 
    </div> 
     <div class="form-group"> 
     <button type="submit" class="btn btn-default">Create</button> 
     </div> 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 

jetzt brauche ich dieses Formular zu validieren, wenn einige Benutzer an die bestehende Reihe neuer Wert hinzufügen (erzeugen eine Nachricht)

wie kann ich tun Dies?

+0

Sie bereits Validierungscode haben, was ist das Problem? –

+0

Nein, diese Validierung gilt für leere Werte. Das heißt, wenn ich auf die Schaltfläche ohne Werte klicke, wird dies bestätigt. Aber wenn ich dem gleichen Benutzer Werte für existierende hinzufügen, wird es auch mit neuen Datensätzen gespeichert. Ich brauche eine Validierung dafür (wenn ich Werte zu bestehenden Datensätzen hinzufüge, sollte es validieren) – Fernando

Antwort

0

Wenn ich Sie richtig verstanden habe, können Sie die einzigartige Gültigkeitsregel auf Ihre verborgenen cid Feld wie folgt verwenden müssen:

 $this->validate($request, [ 
     'cid'  => 'unique:permissions,collaborator_id', 
     'status' => 'required' 
    ]); 

diese Weise, wenn dieser Benutzer hat bereits eine Zeile in der Tabelle, es gewann Lass ihn keinen neuen erstellen und es wird ein Validierungsfehler angezeigt.

Allerdings muss möglicherweise eine benutzerdefinierte Fehlermeldung für diesen zu erstellen, um den Benutzer zu verstehen, warum sein Formular nicht akzeptiert wird. auch dont vergessen eine zusätzliche Spanne irgendwo auf dem Formular erstellen für die Fehler des cid Feld erscheinen:

@if ($errors->has('cid')) 
    <span class="help-block">{{ $errors->first('cid') }}</span> 
@endif 
+0

Ich möchte Ihre erste Validierung. aber wenn ich es verwendete generierte folgenden Fehler ** Syntaxfehler, unerwartete '' Status '' (T_CONSTANT_ENCAPSED_STRING), erwartet ']' ** – Fernando

+0

Ja, gab es ein Komma fehlt nach der CID-Regel. – LePhleg

+0

, aber wenn Komma jetzt aufgetreten ist, trat dieser Fehler auf ** SQLSTATE [42S02]: Basistabelle oder View nicht gefunden: 1146 Tabelle 'Samantha.Permission' existiert nicht (SQL: wählen Sie count (*) als Aggregat aus 'Erlaubnis' wo 'collaborator_id' = 29) ** – Fernando

Verwandte Themen