1. Go to this page and download the library: Download masmerise/livewire-toaster 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/ */
masmerise / livewire-toaster example snippets
return [
/**
* Add an additional second for every 100th word of the toast messages.
*
* Supported: true | false
*/
'accessibility' => true,
/**
* The vertical alignment of the toast container.
*
* Supported: "bottom", "middle" or "top"
*/
'alignment' => 'bottom',
/**
* Allow users to close toast messages prematurely.
*
* Supported: true | false
*/
'closeable' => true,
/**
* The on-screen duration of each toast.
*
* Minimum: 3000 (in milliseconds)
*/
'duration' => 3000,
/**
* The horizontal position of each toast.
*
* Supported: "center", "left" or "right"
*/
'position' => 'right',
/**
* New toasts immediately replace similar ones, ensuring only one toast of a kind is visible at any time.
* Takes precedence over the "suppress" option.
*
* Supported: true | false
*/
'replace' => false,
/**
* Prevent the display of duplicate toast messages.
*
* Supported: true | false
*/
'suppress' => false,
/**
* Whether messages passed as translation keys should be translated automatically.
*
* Supported: true | false
*/
'translate' => true,
];
use Masmerise\Toaster\Toaster;
final class RegistrationForm extends Component
{
public function submit(): void
{
$this->validate();
User::create($this->form);
Toaster::success('User created!'); // 👈
}
}
use Masmerise\Toaster\PendingToast;
final class RegistrationForm extends Component
{
public function submit(): void
{
$this->validate();
$user = User::create($this->form);
// 👇
PendingToast::create()
->when($user->isAdmin(),
fn (PendingToast $toast) => $toast->message('Admin created')
)
->unless($user->isAdmin(),
fn (PendingToast $toast) => $toast->message('User created')
)
->success();
}
}
use Masmerise\Toaster\Toastable;
final class ProductListing extends Component
{
use Toastable; // 👈
public function check(): void
{
$result = Product::query()
->tap(new Available())
->count();
if ($result < 5) {
$this->warning('The quantity on hand is critically low.'); // 👈
}
}
}
final class CompanyController extends Controller
{
/** @throws ValidationException */
public function store(Request $request): RedirectResponse
{
$validator = Validator::make($request->all(), [...]);
if ($validator->fails()) {
return Redirect::back()
->error('The form contains several errors'); // 👈
}
Company::create($validator->validate());
return Redirect::route('dashboard')
->info('Company created!'); // 👈
}
}
use Masmerise\Toaster\Collector;
use Masmerise\Toaster\ToasterConfig;
use Masmerise\Toaster\ToastBuilder;
final readonly class SendEmailVerifiedNotification
{
public function __construct(
private ToasterConfig $config,
private Collector $toasts,
) {}
public function handle(Verified $event): void
{
$toast = ToastBuilder::create()
->duration($this->config->duration)
->success()
->message("Thank you, {$event->user->name}!")
->get();
$this->toasts->collect($toast);
}
}
Toaster::info('user.created', ['name' => $user->full_name]);
Toaster::info('You now have full access!');
use Masmerise\Toaster\Toaster;
final class RegisterUserControllerTest extends TestCase
{
#[Test]
public function users_can_register(): void
{
// Arrange
Toaster::fake();
Toaster::assertNothingDispatched();
// Act
$response = $this->post('users', [ ... ]);
// Assert
$response->assertRedirect('profile');
Toaster::assertDispatched('Welcome!');
}
}
final readonly class DailyCountingCollector implements Collector
{
public function __construct(private Collector $next) {}
public function collect(Toast $toast): void
{
// increment the counter on durable storage
$this->next->collect($toast);
}
public function release(): array
{
return $this->next->release();
}
}
public function register(): void
{
$this->app->extend(Collector::class,
static fn (Collector $next) => new DailyCountingCollector($next)
);
}