我遇到了管理员编辑员工表单的情况:添加员工时,名字,姓氏和SSN是必需的。那里没有问题。我有问题的地方是在编辑表格时。验证SSN是唯一字段,因此我没有问题。
printf("\e[?25l");
但是我确实有一个问题是非唯一字段。我不知道当字段不是唯一时如何设置验证以按ID跳过。这是FormRequest的整个规则部分:
'ssn_edit' => 'required|unique:employees,ssn,' . $id
很明显-无论是否填充该字段,都会在first_name和last_name上引发验证错误。 你们中的一些Laravel大师可以提供的任何帮助将不胜感激!
答案 0 :(得分:0)
验证非唯一字段一定不会出错,可能是您的编辑表单有误,将value
属性设置为像这样输入
<input type="text" value="{{ $employee->first_name }}" name="first_name">
答案 1 :(得分:0)
您可以采取许多技巧来解决问题。但是我只有两种方法。
第一个是:防止在要编辑员工时发送ssn_edit值
示例:
<input type="text" value="{{ isset($employee) ? $employee->ssn_edit : old('ssn_edit') }}" @isset($employee) disabled @endisset name="ssn_edit">
public function rules()
{
$id = $this->input('employee_id');
return [
'first_name' => 'required',
'last_name' => 'required',
'ssn_edit' => 'required|sometimes|unique:employees,ssn,' . $id
];
}
第二个是:在验证员工之前检查您的方法。是POST
还是PUT
,如果是PUT
,请不要在验证中添加唯一规则。
结论:每次调用验证时,验证都会生效,无论您是编辑还是添加新员工。 #CMIIW