Ich habe es geschafft, x-editierbare (https://vitalets.github.io/x-editable/) zu arbeiten mit einer Seite, insofern wenn ich auf ein Feld klicke, es inline und I anzeigt kann es bearbeiten, und ich kann erfolgreich an einen POST-URI übergeben.Wie validiere ich X-editierbare Anfrage in Laravel (Server-Seite)
Die Idee dabei ist, dass ich drei Schlüssel-Wert-Paare bin das Senden:
array:3 [▼
"name" => "name"
"value" => "mathematics"
"pk" => "1"
]
und meine update()
Methode fängt das Array, und aktualisiert sie erfolgreich den Datensatz in der Datenbank. Aber ich versage die Daten zu validieren. Diese
ist, wie mein Controller aussieht:
public function update(Request $request)
{
//
$id = $request->pk;
$subject = Subject::findOrFail($id);
$rules = array (
'name' => 'bail|required|max:20|unique:subjects,name,'.$id
);
Dieser Pass Validierung leicht, auch wenn ich versuche, es zu scheitern
$validator = Validator::make ($request->all(), $rules);
if ($validator->fails()) {
return response()->json (array (
'errors' => $validator->getMessageBag()->toArray()
));
} else {
$subject->update([$request->name => $request->value]);
}
return response()->json ($subject);
}
So ist es, als ob ich vorbei irgendwie nicht die " Korrekt "Objekt zur Validierung anfordern()? Es gibt keine Formularübergabe, aber the documentation gibt eindeutig an:
Laravel generiert eine JSON-Antwort, die alle Überprüfungsfehler enthält. Diese JSON-Antwort wird mit einem HTTP-Statuscode 422 gesendet. 1
Route:
Route::post('/subjects/update/', '[email protected]');
Skript:
$('#subjects').editable({
container:'body',
selector:'td.name',
type:'post',
dataType:'JSON',
validate:function(value){
if ($.trim(value) === '') {
return "Field is required";
}
}
});
https://laravel.com/docs/5.4/validation#quick-ajax-requests-and-validation
Ich habe ein kleines bisschen Mühe, Ihre Frage zu verstehen. Deine Werte werden korrekt gesendet? Aber die Validierung wird nicht "richtig" ausgeführt? Ist es die maximale Länge? Die Subjektbeziehung? – Henry
Womit versuchst du es zu versäumen? – Henry
@Henry das 'name'-Feld ist eindeutig und wenn ich versuchte, einen Namen einzufügen, der bereits existiert, passiert die Validierung kann Ursache und Interner Fehler. Normalerweise, wenn ich ajax-Anfrage ohne x-editable sende und versuche, diese Validierung zu scheitern, gebe ich die Fehlermeldung durch json zurück, die ich fange und es dem Benutzer zeige. –