Я хотел знать, как правильно обрабатывать ошибки. Это один блок моей формы. Если я введу в поле уже существующую запись в моей базе данных с тем же именем команды, это даст мне нарушение ограничения целостности: 1062 Ошибка повторяющегося ввода. Я хочу дать пользователю сообщение об ошибке ниже поля team_name, в котором говорится, что это имя команды уже существует с красными буквами.
<form method="POST" action="createteams">
@csrf
<div class="form-group row">
<label for="team_name" class="col-md-4 col-form-label text-md-right">{{ __('Team Name') }}</label>
<div class="col-md-6">
<input id="team_name" type="text" class="form-control @error('team_name') is-invalid @enderror" name="team_name" value="{{ old('team_name') }}" required autocomplete="team_name" autofocus>
@error('team_name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
приведенный ниже код работает для моего раздела редактирования профиля. Это потому, что он обновляет базу данных и не пытается вставить как выше?
<form method="post" action="{{route('users.update',$user)}}">
{{ csrf_field() }}
{{ method_field('patch') }}
<div class="form-group row">
<label for="org_name" class="col-md-4 col-form-label text-md-right">{{ __('Organisation Name ') }}</label>
<div class="col-md-6">
<input id="org_name" name="org_name" type="text" class="form-control @error('org_name') is-invalid @enderror"value="{{$user->org_name}}">
@error('org_name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
отредактированный контроллер
class CreateTeamController extends Controller
{
public function index(Request $request)
{
$fName = DB::table('users')->select('org_name', 'id')->whereNotIn('id',[auth()->user()->id])->get();
return view('teams.createteams',compact('fName'));
}
public function store(Request $request)
{
$this->validate($request, [
'org_name' => 'required|string|max:255|unique:teams'
]);
//get the current logged in user
$user=auth()->user();
$team=Team::create($request->all());
//because App\User mopdel has a relationship teams we can directly attach means link a user to a team
$user->teams()->attach($team);
//then we check if any user was selected from the dropdown in the form if yes then iterate over each user
if($request->get('org_select')) {
foreach($request->get('org_select') as $org) {
//find the user details from users table using App\User model
$user = User::find($org);
Mail::send('mail.notice',['user' => $user,'team'=>$team],
function ($message)
use ($user) {
$message->subject(auth()->user()->org_name." has invited you to a team");
$message->to($user->email, $user->org_name);
}
);
\DB::table('team_user')->insert(['users_id' => $org, 'teams_id' => $team->id]);
}
}
return redirect('viewteams');
}
}