1. Go to this page and download the library: Download laragear/alerts library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
laragear / alerts example snippets
use App\Alerts\FluxCallout;
FluxCallout::push(['body' => 'This is awesome!']);
namespace App\Views\Alerts;
use Laragear\Alerts\Alert;
class FluxCallout extends Alert
{
/**
* @inheritDoc
*/
public function toHtml()
{
return view('alerts.flux-callout', $this->all());
}
}
use Illuminate\Support\Str;
/**
* Add actions to the Flux UI Callout.
*
* @return $this
*/
public function actions(array $actions): static
{
return $this->set('actions', $actions);
}
/**
* Create a successful Flux UI callout.
*
* @return $this
*/
public static function success(string $heading, string $text = '', string $icon = ''): static
{
return static::push(array_filter([
'heading' => $heading,
'text' => e($text)
'icon' => $icon ?: 'check'
]));
}
/**
* Returns an array of default values.
*/
protected function getDefaults(): array
{
return [
'color' => 'secondary',
];
}
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Alerts\FluxCallout;
use App\Models\Invoice;
class InvoiceController extends Controller
{
/**
* Confirm the invoice payment.
*/
public function confirm(Request $request, Invoice $invoice)
{
$invoice->markAsConfirmed();
FluxCallout::push([
'color' => 'green',
'heading' => 'Invoice paid',
])->actions([
['label' => 'Follow order', 'href' => route('order.show', $invoice->order)]
]);
return to_route('invoice.show', $invoice);
}
}
/**
* Add a localized title.
*/
public function heading(...$arguments)
{
return $this->set('heading', trans(...$arguments));
}
FluxCallout::push()->heading('payment.success');
use Illuminate\Support\Facades\Auth;
use App\Alerts\FluxCallout;
FluxCallout::pushWhen(Auth::check())
->heading('You are authenticated');
FluxCallout::pushUnless(Auth::user()->mailbox()->isNotEmpty())
->heading('You have messages in your inbox');
use App\Alerts\FluxCallout;
FluxCallout::push(['title' => 'Your disk size is almost full'])
->color('red')
->persistAs('disk.full');
use App\Alerts\FluxCallout;
if ($disk->notFull()) {
FluxCallout::abandon('disk.full');
}
public function toHtml()
{
return view('alerts.flux-callout', [
'heading' => $this->heading,
'text' => $this->text,
'actions' => $this->actions,
]);
}
use App\Alerts\FluxCallout;
use App\Models\Invoice;
use Laragear\Alerts\Alert;
use Laragear\Alerts\AlertChannel;
use Illuminate\Notifications\Notification;
class InvoicePaid extends Notification
{
/**
* Create a new Invoice Paid instance.
*/
public function __construct(protected Invoice $invoice)
{
//
}
/**
* Get the notification channels.
*/
public function via(object $notifiable): string
{
return AlertChannel::class;
}
/**
* Get the alert representation of the notification.
*/
public function toAlert(object $notifiable): Alert
{
return FluxCallout::make()
->title('InvoicePaid')
->text('You will receive a copy of the transaction in your email')
->actions(
['label' => 'Follow order', 'href' => route('orders.show', $this->invoice->order)],
['label' => 'See all orders', 'href' => route('orders.index')],
);
}
}
use App\Models\User;
protected User $user;
public function __serialize(): array
{
return array_merge(parent::__serialize(), [
'user' => $this->user->getKey(),
];
}
public function __unserialize(array $data): void
{
parent::__unserialize($data);
$this->user = User::findOrFail($data['user']);
}
use Illuminate\Http\Request;
use App\Alerts\FluxCallout;
public function fromServer(Request $request)
{
// Add the alerts from the response
$request->collect('alerts')->map(FluxCallout::push(...))
}
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;
Route::prefix('api')
->middleware('alerts.json:_status.alerts')
->controller(UserController::class, function () {
Route::post('user/create', 'create');
Route::post('user/{user}/update', 'update');
});
use Illuminate\Support\Facades\Route;
use App\Models\User;
use Inertia\Inertia;
use Laragear\Alerts\Facades\Alert;
Route::middleware('alerts.inertia')
->get('users', function () {
// Push an alert to the frontend.
FluxCallout::make()
->title('All users accounted for!')
->color('red');
return Inertia::render('users/index', [
'users' => User::paginate()
]);
});
use Laragear\Alerts\Facades\Alert;
public function test_alert_sent()
{
$alert = Alert::fake();
$this->post('/comment', ['body' => 'cool'])->assertOk();
$alert->assertHasOne();
}