Notifications are a great way to inform your users of things that are happening in your application. For example, you might use a notification to let a user know when a team member has completed a given to-do list task. These notifications are viewable by clicking on the "notification bell" icon in the application's navigation bar. The notification bell will have an unread count indicator when there are unread announcements or notifications.
To create a notification, inject the Laravel\Spark\Contracts\Repositories\NotificationRepository
into your controller or any other class which is being resolved by the Laravel service container:
use Laravel\Spark\Contracts\Repositories\NotificationRepository;
public function __construct(NotificationRepository $notifications)
{
$this->notifications = $notifications;
}
Then, you may use the create
method to create the notification:
$this->notifications->create($user, [
'icon' => 'fa-users',
'body' => 'A team member completed a task!',
'action_text' => 'View Task',
'action_url' => '/link/to/task',
]);
The action_text
and action_url
attributes are optional so you do not need to pass them in order to create a notification. However, providing these attributes will create a button on the notification where the user can be directed to some other location for information relevant to the notification.
When a notification is created, Spark will fire the Laravel\Spark\Events\NotificationCreated
event, which your application can listen for to do work after a notification is created.
Note: Before using this feature, check out the Laravel notification documentation.
Spark also allows you to send notifications using the Laravel \notification system. To create a notification, you may use the following Artisan command:
php artisan make:notification TaskCompleted
This command will place a fresh notification in your app/Notifications
directory. You may add the notification to Spark's notification table by specifying the SparkChannel
channel in your notification's via
method. The SparkChannel
may be thought of as a replacement to Laravel's default database
channel:
use Laravel\Spark\Notifications\SparkChannel;
public function via($notifiable)
{
return [SparkChannel::class];
}
Before using the SparkChannel
, you should define a toSpark
method on the notification class. This method will receive a $notifiable
entity and should return a SparkNotification object:
use Laravel\Spark\Notifications\SparkNotification;
public function toSpark($notifiable)
{
return (new SparkNotification)
->action('View Task', '/link/to/task')
->icon('fa-users')
->body('A team member completed a task!');
}
Notifications may be sent in two ways: using the notify
method of the Notifiable
trait or by using the Notification
facade. You may take a look at the Laravel notification documentation to get more details regarding these two approaches to sending notifications.
Here's an example of sending notifications to a Spark user using the notify
method:
$user->notify(new TaskCompleted);
When sending a notification to a team, all members of that team will be notified:
$team->notify(new TaskCompleted);