我有一个表单需要为我的帖子创建类别,其他类别在标签表中,现在我想当我添加新类别时,我收到此错误并返回如何我可以这样做?我的表单创建新类别有此代码:
<form method="post" class="form-horizontal" action="/tag">
{{csrf_field()}}
<div class="form-group">
<label class="control-label col-sm-4" >New Category:</label>
<div class="col-sm-5">
<input type="text" class="form-control" name="name">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-12">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
我的Controller to Add类别有以下代码:
public function store(request $request)
{
$this->validate($request,array('name'=>'required'));
$tag=new Tag;
$tag->name=$request->name;
$tag->save();
return redirect('/tag');
}
答案 0 :(得分:0)
你有没有试过看到这条规则? https://laravel.com/docs/5.4/validation#rule-unique
在doc示例中:
$v = Validator::make($data, [
'email' => 'unique:users,email_address'
]);
在你的场景中可能是:
$valid = Validator::make($data, [
'name' => 'unique:table'
]);
如果您可以检查$valid->fails()
是否有错误,可以使用$valid->errors()->all()
进行打印
所以,在你的$ this-&gt; validate()函数中放入vcalidation之后,如果有错误则返回,你可以这样做:
$validation = $this->validate($request,array('name'=>'required|unique:table_name'));
if($validation->valid){
...
}else{
//what you want like:
redirect('route')->withErrors(["errors"=>$validation->errors])
}
你的功能验证可能是这样的:
private function validate($data , $rules){
$valid = Validator::make($data, $rules);
$result = new /StdClass();
$result->valid = !$valid->fails();
$result->errors = $valid->errors()->all()
return $result
}