Install the package:
composer require uxweb/sweet-alert
For Laravel < 5.5, register the service provider and alias in config/app.php.
Include SweetAlert.js:
resources/views/layouts/app.blade.php):
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
@include('sweet::alert')
yarn add sweetalert --dev
Require in resources/js/bootstrap.js:
require("sweetalert");
First use case: Trigger a success alert in a controller:
use UxWeb\SweetAlert\Facades\Alert;
public function showSuccess()
{
Alert::success('Success!', 'Your action was completed.');
return redirect()->back();
}
Basic Alerts: Use facades for simplicity:
Alert::success('Title', 'Message');
Alert::error('Error', 'Something went wrong');
Alert::warning('Warning', 'Be careful!');
Alert::info('Info', 'Here is some info');
Customizing Alerts: Pass an array for advanced options:
Alert::success('Custom Alert', 'Message', [
'timer' => 3000,
'confirmButtonText' => 'Okay',
'showConfirmButton' => false,
]);
Conditional Alerts: Check for flash data or session variables:
if (session()->has('success')) {
Alert::success('Success', session('success'));
}
Integration with Forms: Trigger alerts after form submission:
public function store(Request $request)
{
$validated = $request->validate([...]);
Alert::success('Submitted', 'Your form was saved!');
return back();
}
Dynamic Alerts: Use Blade directives for dynamic content:
@alert(['title' => 'Dynamic', 'text' => 'User ' . $user->name . ' created'])
Queueing Alerts: Store alerts in the session and display them on the next request:
session()->flash('alert', ['type' => 'success', 'title' => 'Queued', 'text' => 'This will show later']);
Frontend Dependency:
sweetalert.min.js or @include('sweet::alert') will result in no alerts appearing.Session Flash Data:
Alerts triggered via session()->flash() must be checked in the next request. Directly flashing alerts won’t work:
// ❌ Won't work
session()->flash('alert', Alert::success('Test', 'Message'));
// ✅ Correct
session()->flash('alert', ['type' => 'success', 'title' => 'Test', 'text' => 'Message']);
Laravel Mix Caching: After adding SweetAlert via Mix, run:
npm run dev
Or for production:
npm run prod
To avoid stale JavaScript files.
CSRF Conflicts: If alerts trigger unexpectedly, ensure no JavaScript errors exist (check browser console). SweetAlert may conflict with other libraries if not properly initialized.
Deprecated Methods:
Avoid using Alert::make() (if present in older versions). Stick to facades like Alert::success().
Check the Console:
Open browser dev tools (F12) to verify SweetAlert.js loads without errors. Look for:
Uncaught ReferenceError: swal is not defined
This indicates the CDN/Mix setup failed.
Inspect Session Data: Dump session flash data to confirm alerts are being set:
dd(session()->all());
Test with Hardcoded Alerts: Temporarily hardcode an alert in your Blade file to isolate issues:
<script>
swal("Test", "If you see this, SweetAlert is working!");
</script>
Custom Alert Types:
Extend the package by adding new alert types (e.g., Alert::question()). Override the SweetAlert facade or create a helper:
if (!method_exists(\UxWeb\SweetAlert\Facades\Alert, 'question')) {
Alert::macro('question', function ($title, $text, $options = []) {
return $this->alert('question', $title, $text, $options);
});
}
Theming: Customize SweetAlert’s appearance by overriding its CSS. Add to your main CSS file:
.swal2-popup {
background-color: #f8f9fa;
color: #333;
}
Localization:
Use SweetAlert’s built-in localization by including locale files and setting the language option:
Alert::success('Title', 'Message', ['language' => 'es']);
Ensure the locale file (e.g., sweetalert.js.es.js) is loaded via Mix or CDN.
Event-Based Alerts:
Trigger alerts based on Laravel events (e.g., Illuminate\Auth\Events\Registered):
event(new Registered($user));
Alert::success('Registered', 'Account created!');
How can I help you explore Laravel packages today?