2 回答
TA贡献1799条经验 获得超6个赞
有趣的是,该 @error 指令没有通过输入名称以编程方式绑定到任何输入字段。它仅通过接近度与输入字段在空间上相关,并且可以放置在页面上的任何位置。
@error此外,只要将相同的字符串传递给withErrors()控制器中的调用,您就可以方便地使用指令中的任何字符串。
因此,解决在多个输入中定位适当输入的问题变得像使用任何唯一字符串(不一定是目标输入名称)作为withErrors()方法调用中的键并通过将相同的字符串传递给@error指令来检索错误消息一样简单。就我而言,我选择使用帐户 ID 作为唯一字符串。
在AccountController.php:
public function update(Request $request, Account $account)
{
if($request->input('credit') < 0)
{
return back()->withErrors([$account->id=>'enter a positive amount']);
}
// ... other logic
}
在 html 刀片模板中:
@forelse($accounts as $account)
<form method="POST" action="{{ route('account.update', $account->id) }}">
@csrf
<div>
<input type="number" name="credit" class="@error($account->id) is-invalid @enderror" required>
<input type="submit" class="btn" value="ok">
@error($account->id)
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</form>
@empty
@endforelse
注意:在任何指令中使用不存在的键@error会破坏其他 @error 指令的代码,并且不会导致显示错误消息。
TA贡献1799条经验 获得超8个赞
解决方案将执行以下操作:
使用提交按钮的值将值/发布的表单存储在变量中
放弃错误指令并使用旧版本
将旧版本与变量结合起来检查你是否有正确的形式
你会得到这样的东西:
@if ($errors->has('email') && $submitted_form_identifier === $form_identifier)
<span>{{ $errors->first('email') }}</span>
@endif
- 2 回答
- 0 关注
- 361 浏览
添加回答
举报
