フィールドをクリックしたときにインラインで表示されている限り、x編集可能(https://vitalets.github.io/x-editable/)それを編集することができ、私は正常にPOST URIに提出することができます。laravelでX編集可能なリクエストを検証する方法(サーバー側)
ここでの考え方は、私が3キーと値のペアを送ってるということです:
array:3 [▼
"name" => "name"
"value" => "mathematics"
"pk" => "1"
]
と私のupdate()
方法は、配列をキャッチし、それが成功したデータベースのレコードを更新します。しかし、私はデータの検証に失敗しています。
これは私のコントローラがどのように見えるかです:
public function update(Request $request)
{
//
$id = $request->pk;
$subject = Subject::findOrFail($id);
$rules = array (
'name' => 'bail|required|max:20|unique:subjects,name,'.$id
);
この検証は私が
$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);
}
それを失敗しようとした場合でも、私は何とか "を渡していないよかのように、それはだ容易に通過します正しい "Requestオブジェクトを検証する()?フォーム提出はありませんが、the documentationには次のように明確に記載されています:
Laravelはすべての検証エラーを含むJSON応答を生成します。このJSONレスポンスは、422 HTTPステータスコードとともに送信されます。 1
経路:
Route::post('/subjects/update/', '[email protected]');
スクリプト:
$('#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
質問を理解するのに少し問題があります。あなたの値は正しく送信されていますか?しかし、検証は「正しく」実行されていませんか?それは最大の長さですか?主題関係は? – Henry
あなたは "それを失敗しようとしています"とは何ですか? – Henry
@Henry 'name'フィールドは一意です。すでに存在する名前を挿入しようとすると、検証に失敗し、内部エラーが発生する可能性があります。通常、x-editableを使わずにajaxリクエストを送信し、その検証に失敗すると、jsonを通してエラーメッセージが返されます。これを捕捉してユーザに表示します。 –