У меня есть контроллер, который прослушивает создание нового расписания и отправляет результат обратно в представление через ajax. Внутри него я хочу добавить Уведомление, чтобы отправить электронное письмо пользователю, когда Расписание не может быть заполнено из-за нехватки ресурсов на эту конкретную дату и время.
Проблема в том, что я получаю ошибку ниже:
Class 'App\Http\Controllers\Notification' not found in /laravel/app/Http/Controllers/DadosAgendamentoController.php on line 89
Структура папок такая:
-app
-Http
-Controllers
DadosAgendamentoController.php
-Notifications
AgendamentoPendente.php
DadosAgendamentoController.php код головы:
namespace App\Http\Controllers;
use Input;
use Request;
use App\Servicos;
use App\Disponibilidades;
use App\Estabelecimentos;
use App\HorariosEstabelecimento;
use App\Agendamento;
use App\User;
use App\Notifications\AgendamentoPendente;
строки 88 и 89:
$user = User::where('id',1)->get();
Notification::send($user, new AgendamentoPendente(1));
Через мой контроллер я могу получить доступ ко всем классам выше, но не AgendamentoPendente
Моя цель состоит в том, чтобы отправить электронное письмо администратору, чтобы он мог предложить новую дату и время клиенту, когда ресурсы недоступны в нужную дату и время.
Как это можно исправить? Могу ли я получить доступ к классу в этом контроллере? Как?
Уведомления могут быть отправлены двумя способами: с помощью метода notify of the Notifiable trait или с помощью фасада Notification.
https://laravel.com/docs/5.3/notifications#sending-notifications
Опция 1
Ты можешь использовать notify()
метод:
$user->notify(new AgendamentoPendente(1));
Также убедитесь, что User
класс использует Notifiable
черта характера:
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable;
Вариант 2
Используя фасад с полным пространством имен:
\Notification::send($user, new AgendamentoPendente(1));
добавлять use Notification;
в вашем контроллере
ИЛИ ЖЕ
в качестве альтернативы, используйте \Notification::send($user, new AgendamentoPendente(1));
добавьте это в верхней части контроллера:
use App\Notifications\AgendamentoPendente;
у меня была та же проблема, и это исправило
Также обратите внимание, что если вы используете фасад, убедитесь, что ваш пользователь запрашивает поле электронной почты из вашей базы данных
$users = User::select("email")->get();
\Notification::send($users, new AgendamentoPendente(1));