【发布时间】:2017-11-30 12:46:08
【问题描述】:
我已经设法让 x-editable (https://vitalets.github.io/x-editable/) 与页面一起工作,当我点击一个字段时,它显示为内联并且我可以编辑它,并且我能够成功提交到 POST URI。
这里的想法是我发送三个键值对:
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 );
}
所以就好像我没有将“正确的”请求对象传递给 validate()?没有表单提交,但是the documentation明确表示:
Laravel 生成一个包含所有验证错误的 JSON 响应。此 JSON 响应将与 422 HTTP 状态代码一起发送。1
路线:
Route::post('/subjects/update/', 'SubjectsController@update');
脚本:
$('#subjects').editable({
container:'body',
selector:'td.name',
type:'post',
dataType:'JSON',
validate:function(value){
if ($.trim(value) === '') {
return "Field is required";
}
}
});
1https://laravel.com/docs/5.4/validation#quick-ajax-requests-and-validation
【问题讨论】:
-
我在理解您的问题时遇到了一些问题。您的值是否正确发送?但是验证没有“正确”运行?是最大长度吗?主语关系?
-
你
"trying to fail it"有什么? -
@Henry
name字段是唯一的,当我尝试插入一个已经存在的名称时,它会通过验证可能导致内部错误。通常,当我发送没有 x-editable 的 ajax 请求并尝试使验证失败时,我会通过 json 返回错误消息,我会捕获并将其显示给用户。
标签: javascript php jquery laravel validation