在我的博客控制器中,我有addBlog和updateBlog尝试使用验证器功能验证它们。 虽然添加博客它的工作方式已经过时,但在更新博客时,它一次又一次地说标题已经存在,因为我选择了标题为uniue。 那么我怎样才能使这项工作也可以进行编辑。
我正在使用laravel 5.2
protected function validator(array $data)
{
return Validator::make($data, [
'title' => 'required|max:255|unique:blogs',
'meta_tags' => 'required|max:200',
'content' => 'required|min:6',
]);
}
public function updateBlog(Request $request, $id)
{
$this->middleware('auth');
$user = Auth::user();
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
try{
$blog_Request = Blog::findOrFail($id);
$blog_Request->title = $request->get('title');;
$blog_Request->meta_tags = $request->get('meta_tags');
$blog_Request->content = $request->get('content');
$blog_Request->status = $request->get('status');
if ($blog_Request->save()) {
$request->session()->flash('message', 'Blog saved successfully!');
$request->session()->flash('alert-class', 'alert-success');
} else {
$request->session()->flash('message', 'Some error occoured!');
$request->session()->flash('alert-class', 'alert-danger');
}
return redirect()->route('blog.edit_blog', $id);
} catch (QueryException $ex) {
print_r("Error on line number " . $ex->getLine() . " in file " . $ex->getFile() ."</br>");
}
}
public function addBlog(Request $request)
{
$this->middleware('auth');
$user = Auth::user();
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
$blog_Requests = new Blog;
$blog_Requests->title = $request->get('title');;
$blog_Requests->meta_tags = $request->get('meta_tags');
$blog_Requests->content = $request->get('content');
$blog_Requests->user_id = $user->id;
try{
if ($blog_Requests->save()) {
$request->session()->flash('message', 'Blog saved successfully!');
$request->session()->flash('alert-class', 'alert-success');
} else {
$request->session()->flash('message', 'Some error occoured!');
$request->session()->flash('alert-class', 'alert-danger');
}
return redirect()->route('blogs');
} catch (QueryException $ex) {
print_r("Error on line number " . $ex->getLine() . " in file " . $ex->getFile() ."</br>");
}
}
答案 0 :(得分:0)
我认为解决方案是在验证程序中添加$blog->id
作为第二个参数,因为如果用户提供已经由使用博客。
:
return Validator::make($data, [
'title' => 'required|max:255|unique:blogs,' . $blog->id,
'meta_tags' => 'required|max:200',
'content' => 'required|min:6',
]);
希望这有帮助!