Activity Verbs
Introduction
A verb identifies the action recorded by an activity. You may use a string or an enum case.
For example, ->action('place', $order) records place. Define its headline in routes/feed.php. Use an enum to share verb values across your application.
Recording With Enums
Defining a Backed Enum
Define the verb values in a backed enum:
<?php
namespace App\Enums;
enum OrderActivity: string
{
case Placed = 'place';
case Confirmed = 'confirm';
case Ready = 'ready';
}Defining Headlines for Enum Verbs
Pass the enum case to the verb method in routes/feed.php:
use App\Enums\OrderActivity;
use App\Models\Order;
use Storyfeed\Facades\Story;
Story::for(Order::class)
->verb(OrderActivity::Placed)
->headline(':actor placed :object with :target');This defines a headline for the case's value, place, as ->verb('place') does.
Adding Fluent Recording
To publish directly from an enum case, implement the FeedVerb interface and use the AsFeedVerb trait:
<?php
namespace App\Enums;
use Storyfeed\Concerns\AsFeedVerb;
use Storyfeed\Contracts\FeedVerb;
enum OrderActivity: string implements FeedVerb
{
use AsFeedVerb;
case Placed = 'place';
case Confirmed = 'confirm';
case Ready = 'ready';
}You may now publish from the enum case. The record method on the Storyfeed facade also accepts an enum case as its verb argument, without requiring the trait:
use App\Enums\OrderActivity;
OrderActivity::Placed->by($request->user())
->object($order)
->to($shop)
->publish();use App\Enums\OrderActivity;
use Storyfeed\Facades\Storyfeed;
Storyfeed::record(
verb: OrderActivity::Placed,
object: $order,
actor: $request->user(),
target: $shop,
);Using Storyfeed's Verbs
Storyfeed provides common verbs through the Storyfeed\Act enum. Define a headline for the verb before publishing:
use App\Models\Order;
use Storyfeed\Act;
use Storyfeed\Facades\Story;
Story::for(Order::class)->verb(Act::Confirm)
->headline(':actor confirmed :object');use Storyfeed\Act;
Act::Confirm->by($request->user())
->object($order)
->publish();use Storyfeed\Act;
use Storyfeed\Facades\Storyfeed;
Storyfeed::record(
verb: Act::Confirm,
object: $order,
actor: $request->user(),
);Storyfeed records the case's value, confirm. See Verb Vocabulary for the available verbs.