Laravel 更新请求验证在 9.x 上不起作用
Laravel update request validation not working on 9.x
我已经在请求文件夹中创建了一个验证请求文件。它在新插入物中工作正常。但是当我更新时,它不起作用我也传递了唯一的 $id 但不起作用。
一个。资源控制器更新方法
public function update(KlassNameRequest $request, $id)
{
$validated = $request->validated();
KlassName::where('id', $id)->update($validated);
}
b。验证码
public function rules()
{
return [
'name' => 'required|unique:klass_names|max:128,' . $this->id,
'ref' => 'required|unique:klass_names|numeric|between:1,999,' . $this->id,
'seat_quota' => 'required|numeric|between:1,9999',
'division' => 'required',
'semester' => 'required',
];
}
我更新时显示此消息
试试这个
'name' => ['required','max:128',Rule::unique('klass_names')->where(function ($query) {
return $query->where('name', $this->name);
})],
'ref' => ['required','max:128',Rule::unique('klass_names')->where(function ($query) {
return $query->where('ref', $this-> ref);
})],
希望能解决问题
return [
'name' => 'required|unique:klass_names,' . $this->id.'|max:128',
'ref' => 'required|unique:klass_names,' . $this->id.'|numeric|between:1,999',
'seat_quota' => 'required|numeric|between:1,9999',
'division' => 'required',
'semester' => 'required',
];
我已经通过这种方式解决了我的问题-
一个。为 $request 方法添加额外的输入隐藏字段传递 id。因为我的路由是资源组路由-
<form action="{{ route('adm.kls.update', $kls->id) }}" method="post">
@csrf
@method('PUT')
<input type="hidden" name="id" value="{{ $kls->id }}">
</form>
b。验证代码中的一些编辑。
public function rules() {
return [
'name' => 'required|max:128|unique:klass_names,name,' . $this->id,
'ref' => 'required|numeric|between:1,999|unique:klass_names,ref,' . $this->id,
'seat_quota' => 'required|numeric|between:1,9999',
];
}
完成。
我已经在请求文件夹中创建了一个验证请求文件。它在新插入物中工作正常。但是当我更新时,它不起作用我也传递了唯一的 $id 但不起作用。
一个。资源控制器更新方法
public function update(KlassNameRequest $request, $id)
{
$validated = $request->validated();
KlassName::where('id', $id)->update($validated);
}
b。验证码
public function rules()
{
return [
'name' => 'required|unique:klass_names|max:128,' . $this->id,
'ref' => 'required|unique:klass_names|numeric|between:1,999,' . $this->id,
'seat_quota' => 'required|numeric|between:1,9999',
'division' => 'required',
'semester' => 'required',
];
}
我更新时显示此消息
试试这个
'name' => ['required','max:128',Rule::unique('klass_names')->where(function ($query) {
return $query->where('name', $this->name);
})],
'ref' => ['required','max:128',Rule::unique('klass_names')->where(function ($query) {
return $query->where('ref', $this-> ref);
})],
希望能解决问题
return [ 'name' => 'required|unique:klass_names,' . $this->id.'|max:128', 'ref' => 'required|unique:klass_names,' . $this->id.'|numeric|between:1,999', 'seat_quota' => 'required|numeric|between:1,9999', 'division' => 'required', 'semester' => 'required', ];
我已经通过这种方式解决了我的问题-
一个。为 $request 方法添加额外的输入隐藏字段传递 id。因为我的路由是资源组路由-
<form action="{{ route('adm.kls.update', $kls->id) }}" method="post">
@csrf
@method('PUT')
<input type="hidden" name="id" value="{{ $kls->id }}">
</form>
b。验证代码中的一些编辑。
public function rules() {
return [
'name' => 'required|max:128|unique:klass_names,name,' . $this->id,
'ref' => 'required|numeric|between:1,999|unique:klass_names,ref,' . $this->id,
'seat_quota' => 'required|numeric|between:1,9999',
];
}
完成。