rubxnmc/sweet-alert

uxweb 开发的一个简单的 PHP 包,用于通过 Laravel 框架显示 Sweet Alerts

维护者

详细信息

github.com/Rubxn/sweet-alert

源代码

安装: 27

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 208

dev-master 2024-02-19 21:02 UTC

This package is auto-updated.

Last update: 2024-09-19 22:48:52 UTC


README

A success alert

Latest Version StyleCI Total Downloads

安装

使用 Composer 安装此包。

composer require uxweb/sweet-alert

如果使用 laravel < 5.5,请在 config/app.php 中包含服务提供者和别名。

'providers' => [
    UxWeb\SweetAlert\SweetAlertServiceProvider::class,
];

'aliases' => [
    'Alert' => UxWeb\SweetAlert\SweetAlert::class,
];

安装前端依赖

此包只能通过使用 JavaScript 的 "ALERT" 的美丽替代品 来工作。

使用 CDN

<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- Include this in your blade layout -->
    <script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
  </head>
  <body>
    @include('sweet::alert')
  </body>
</html>

使用 Laravel Mix

使用 Yarn 安装

yarn add sweetalert --dev

使用 NPM 安装

npm install sweetalert --save-dev

在您的 resources/js/bootstrap.js 文件中要求 sweetalert。

// ...

require("sweetalert");

// ...

然后请确保在您的 blade 布局中包含您的脚本。如果您的脚本标签包含 defer 属性,请删除它,因为 defer 会导致脚本延迟执行,这将在浏览器首先渲染 sweet::alert blade 模板时引发错误。

<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- Scripts -->
    <script src="{{ asset('js/app.js') }}"></script>
  </head>
  <body>
    @include('sweet::alert')
  </body>
</html>

最后使用 Mix 编译您的资源

npm run dev

用法

使用外观

首先在您的控制器中导入 SweetAlert 外观。

use SweetAlert;

在您的控制器中,在执行重定向之前...

public function store()
{
    SweetAlert::message('Robots are working!');

    return Redirect::home();
}

以下是如何使用外观的一些示例

SweetAlert::message('Message', 'Optional Title');

SweetAlert::basic('Basic Message', 'Mandatory Title');

SweetAlert::info('Info Message', 'Optional Title');

SweetAlert::success('Success Message', 'Optional Title');

SweetAlert::error('Error Message', 'Optional Title');

SweetAlert::warning('Warning Message', 'Optional Title');

使用辅助函数

alert($message = null, $title = '')

除了前面列出的方法外,您还可以使用辅助函数而不指定任何消息类型。这样做与以下类似:

alert()->message('Message', 'Optional Title')

与外观一样,我们可以使用辅助函数的相同方法。

alert()->message('Message', 'Optional Title');

alert()->basic('Basic Message', 'Mandatory Title');

alert()->info('Info Message', 'Optional Title');

alert()->success('Success Message', 'Optional Title');

alert()->error('Error Message', 'Optional Title');

alert()->warning('Warning Message', 'Optional Title');

alert()->basic('Basic Message', 'Mandatory Title')->autoclose(3500);

alert()->error('Error Message', 'Optional Title')->persistent('Close');

在您的控制器中,在执行重定向之前...

/**
 * Destroy the user's session (logout).
 *
 * @return Response
 */
public function destroy()
{
    Auth::logout();

    alert()->success('You have been logged out.', 'Good bye!');

    return home();
}

对于一般信息警报,只需这样做: alert('Some message'); (与 alert()->message('Some message'); 相同)。

使用中间件

中间件组

首先通过简单地将中间件类 UxWeb\SweetAlert\ConvertMessagesIntoSweetAlert::class 添加到您的 app/Http/Kernel.php 类的 $middlewareGroups 中来注册中间件。

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        ...
        \UxWeb\SweetAlert\ConvertMessagesIntoSweetAlert::class,
    ],

    'api' => [
        'throttle:60,1',
    ],
];

请确保您只在 'web' 组中注册中间件。

路由中间件

或者,如果您只想将中间件分配给特定路由,请在 app/Http/Kernel.php 文件中添加到 $routeMiddleware

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    ....
    'sweetalert' => \UxWeb\SweetAlert\ConvertMessagesIntoSweetAlert::class,
];

下一步:在您的控制器中,设置您的返回消息(使用 with()),并发送适当的消息和类型。

return redirect('dashboard')->with('success', 'Profile updated!');

return redirect()->back()->with('error', 'Profile updated!');

注意:使用中间件时,如果检测到会话中闪存的以下键之一: errorsuccesswarninginfomessagebasic,则会显示警报。

最终考虑事项

默认情况下,所有警报将在合理的默认秒数后消失。

但不必担心,如果您需要指定不同的时间,您可以

// -> Remember!, the number is set in milliseconds
alert('Hello World!')->autoclose(3000);

此外,如果您需要使警报在页面上保持持久,直到用户按下警报确认按钮将其关闭

// -> The text will appear in the button
alert('Hello World!')->persistent("Close this");

您可以使用 html() 方法在消息中渲染 html,如下所示

// -> html will be evaluated
alert('<a href="#">Click me</a>')->html()->persistent("No, thanks");

自定义

配置

如果您需要为此包自定义默认配置选项,请导出配置文件

php artisan vendor:publish --provider "UxWeb\SweetAlert\SweetAlertServiceProvider" --tag=config

sweet-alert.php 配置文件发布到您的 config 目录。到目前为止,可以更改的唯一配置是所有自动关闭警报的计时器。

视图

如果您需要自定义包含的警报消息视图,请运行

php artisan vendor:publish --provider "UxWeb\SweetAlert\SweetAlertServiceProvider" --tag=views

包视图位于 resources/views/vendor/sweet/ 目录。

您可以根据需要自定义此视图。

配置选项

您可以通过以下配置选项来构建自定义视图

Session::get('sweet_alert.text')
Session::get('sweet_alert.title')
Session::get('sweet_alert.icon')
Session::get('sweet_alert.closeOnClickOutside')
Session::get('sweet_alert.buttons')
Session::get('sweet_alert.timer')

请查阅网站的配置部分以获取所有其他可用选项。

默认视图

sweet_alert.alert 会话键包含一个 JSON 配置对象,可以直接传递给 Sweet Alert。

@if (Session::has('sweet_alert.alert'))
<script>
  swal({!! Session::get('sweet_alert.alert') !!});
</script>
@endif

注意,使用 {{!!}} 输出未转义的 JSON 配置对象,它不会与转义的输出标签 {{ }} 一起工作。

自定义视图

这是如何自定义视图以满足您需求的示例

@if (Session::has('sweet_alert.alert'))
<script>
  swal({
      text: "{!! Session::get('sweet_alert.text') !!}",
      title: "{!! Session::get('sweet_alert.title') !!}",
      timer: {!! Session::get('sweet_alert.timer') !!},
      icon: "{!! Session::get('sweet_alert.type') !!}",
      buttons: "{!! Session::get('sweet_alert.buttons') !!}",

      // more options
  });
</script>
@endif

注意,除了计时器选项外,您必须使用 ""(双引号)来包裹值。

测试

要运行包含的测试套件

vendor/bin/phpunit

演示

SweetAlert::message('Welcome back!');

return Redirect::home();

A simple alert

SweetAlert::message('Your profile is up to date', 'Wonderful!');

return Redirect::home();

A simple alert with title

SweetAlert::message('Thanks for comment!')->persistent('Close');

return Redirect::home();

A simple alert with title and button

SweetAlert::info('Email was sent!');

return Redirect::home();

A info alert

SweetAlert::error('Something went wrong', 'Oops!');

return Redirect::home();

A error alert

SweetAlert::success('Good job!');

return Redirect::home();

A success alert

SweetAlert::info('Random lorempixel.com : <img src="http://lorempixel.com/150/150/">')->html();

return Redirect::home();

HTML in message

SweetAlert::success('Good job!')->persistent("Close");

return Redirect::home();

A persistent alert

许可证

Sweet Alert for Laravel 是开源软件,许可协议为 MIT 协议