Отправка уведомлений из формы в Laravel&
У меня есть форма заполнения задачb, там есть автор и есть человек которому поручена задача. Мне нужно после добавления задачи, оправлять уведомление человеку которому поручена задача на почту. Подскажите может кто знает, как это можно реализовать? Контролер добавления задачи:
class StoreController extends Controller
{
public function __invoke(StoreRequest $request, Task $task)
{
$data = $request->validated();
$data['file_task'] = Storage::disk('public')->put('/images', $data['file_task']);
Task::firstOrCreate($data);
return redirect()->route('serviceman.solution.index');
}
}
Форма добавления задачи
<section class="content">
<div class="container-fluid">
<!-- Small boxes (Stat box) -->
<div class="col-12">
<form action="{{route('serviceman.task.store')}}" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group class = 25">
<input type="hidden" class="form-control w-25" name="author"
value="{{Auth::user()->name }}">
</div>
<div class="form-group">
<input type="text" class="form-control w-25" name="name" placeholder="Тема"
value="{{old('name')}}">
@error('name')
<div class="text-danger">Это поле необходимо заполнить</div>
@enderror
</div>
<div class="form-group class = w-25">
<label>Выберите рабочий центр</label>
<select name="rc_id" class="form-control">
@foreach($rcs as $rc)
<option value="{{$rc->id}}"
{{$rc->id == old('rc_id') ? ' selected' : ''}}
>{{$rc->name}}</option>
@endforeach
</select>
</div>
<div class="form-group class = w-25">
<label>Статус задачи</label>
<select name="status_id" class="form-control">
@foreach($statuses as $status)
<option value="{{$status->id}}"
{{$status->id == old('status_id') ? ' selected' : ''}}
>{{$status->status}}</option>
@endforeach
</select>
</div>
<div class="form-group class = w-25">
<label>Тип проблемы</label>
<select name="problem_id" class="form-control">
@foreach($problems as $problem)
<option value="{{$problem->id}}"
{{$problem->id == old('problem_id') ? ' selected' : ''}}
>{{$problem->name}}</option>
@endforeach
</select>
</div>
<div class="form-group class = w-25">
<label>Ответственный</label>
<select name="user_id" class="form-control">
@foreach($users as $user)
<option value="{{$user->id}}"
{{$user->id == old('user_id') ? ' selected' : ''}}
>{{$user->name}}</option>
@endforeach
</select>
</div>
<div class="form-group class = w-25">
<label>Срок выполнения</label>
<input name="term" id="date" class="form-control" style="width: 100%; display: inline;" onchange="invoicedue(event);"
required="" type="date" value="{{old('term')}}">
</div>
@error('term')
<div class="text-danger">Это поле необходимо заполнить</div>
@enderror
<div class="form-group class = w-50">
<label for="exampleInputFile">Добавить файл</label>
<div class="input-group">
<div class="custom-file">
<input type="file" name="file_task" class="custom-file-input" multiple>
<label class="custom-file-label">Выберите файл</label>
</div>
<div class="input-group-append">
<span class="input-group-text">Загрузка</span>
</div>
</div>
@error('file_task')
<div class="text-danger">Это поле необходимо заполнить</div>
@enderror
</div>
<div class="form-group">
<div class="summernote" >
<textarea id="summernote" name="description_task">
{{old('description_task')}}
</textarea>
@error('description_task')
<div class="text-danger">Это поле необходимо заполнить</div>
@enderror
</div>
<div class="for-group">
<input type="submit" class="btn btn-secondary" value="Добавить"></input>
</div>
</div>
</form>
</div>
<!-- ./col -->
</div>
<!-- /.row -->
Ответы (1 шт):
Автор решения: nomnoms12
→ Ссылка
Вам не нужно делать это в форме. И не нужно в контроллере. Предлагаю сделать это в Observer'е после того, как задача будет создана.
Пример:
class TaskObserver
{
public function created(Task $task)
{
Mail::to($task->user)->send(new TaskCreated($task));
}
}