新的@error指令是Laravel 5.8.13 中引入。因此,不要这样做:
// old
@if ($errors->has('email'))
<span>{{ $errors->first('email') }}</span>
@endif
你现在可以这样做
// new
@error('email')
<span>{{ $message }}</span>
@enderror
但是,我在尝试仅针对几个类似输入字段中发生错误的输入字段时遇到问题。这些字段是similar因为他们有相同的名字。但它们也采用不同的形式并具有不同的提交按钮。
我的 html Blade 文件设置有从生成的多个输入@forelse
陈述。我创建了一个简单的错误检查来检查是否输入了负数并重定向回带有错误消息的同一页面。这@error
指令还用于将自定义类插入到目标输入字段以进行样式设置。
@forelse($accounts as $account)
<form method="POST" action="{{ route('account.update', $account->id) }}">
@csrf
<div>
<input type="number" name="credit" class="@error('credit') is-invalid @enderror" required>
<input type="submit" class="btn" value="ok">
@error('credit')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</form>
@empty
@endforelse
表格提交至update()
中的方法AccountController.php
public function update(Request $request, Account $account)
{
if($request->input('credit') < 0)
{
return back()->withErrors(['credit'=>'enter a positive amount']);
}
// ... other logic
}
问题是,当在一个输入字段中输入负数时,即使它们的形式不同,每个具有相同名称的输入都会显示错误消息。
我认为使输入名称唯一可以解决这个问题,但这将使我的后端逻辑比所需的更加复杂。
无论如何,是否可以在重定向后仅针对目标输入显示错误消息,而不必为每个输入字段使用唯一的名称?