如何在Laravel中开始使用非阻塞的Toastr通知

299 阅读6分钟

在Laravel中开始使用非阻塞的Toastr通知

今天,许多公司都在使用Laravel来设计他们的Web应用程序。然而,当开发人员在他们的应用程序中整合警报时,仍然会遇到一个挑战。

本教程将告诉你如何使用Toastr在Laravel应用程序中显示警报。

这些通知的范围从警告,错误,到成功信息。每个警报都有其自定义的背景颜色。

前提条件

要继续学习本教程, 你需要以下条件:

  • 在你的本地开发环境中安装PHP 7.3及以上版本
  • Laravel的基本知识.本教程使用Laravel 8.
  • [Composer]。

教学目的

本教程将帮助你了解在Laravel中构建Web应用程序时的用户体验设计。

到最后, 你应该能够使用toastr包来显示通知,而不是使用默认的Laravel方法。

开始使用toastr包

Toastr是一个简单的JavaScript库,用于在Web应用中显示警报。

例如, 当新用户在你的网站上注册时, 你可能想给他们显示一个成功的提醒.

该包最初是为了支持基于JavaScript的应用程序。然而, 现在也可以在你的Laravel应用程序中使用它.

因此, 在本教程中, 我们将设置一个Laravel应用程序, 可以使用Toastr包来显示通知.

在你的Laravel应用程序中设置toastr包

现在我们了解了toastr包,让我们在Laravel应用程序中设置它。

要创建一个Laravel项目, 我们使用以下命令:

# install Laravel installer on your local machine
composer global require laravel/installer
#next install Laravel
laravel new toastrExample

cd toastrExample

php artisan serve

通过上面的命令, 我们首先安装了一个全局的Laravel安装程序, 然后创建了toastrExample 项目.

安装完成后, 我们导航到新创建的项目并启动服务器.

现在让我们继续,通过运行以下命令添加我们的toastr 包。

composer require yoeunes/toastr

上面的命令使用PHP包管理器, composer, 来安装yoeunes/toastr 包.

输出。

....
  - Installing yoeunes/toastr (v1.2.6): Loading from cache
  ....

下一步,在你的config/app.php 文件中添加服务提供者,如下图所示。

'providers' => [
    ...
    //the package we previously installed is being made available for use in our application
    Yoeunes\Toastr\ToastrServiceProvider::class
    ...
];

服务提供者是所有Laravel应用程序引导的中心位置。你的应用程序和所有Laravel的核心服务都是通过服务提供者引导的。

将这个包添加到提供者中, 可以确保它在我们启动应用的时候可以使用.

现在继续,通过运行以下命令发布这些文件。

 php artisan vendor:publish --provider='Yoeunes\Toastr\ToastrServiceProvider' --tag="toastr-config"

Copied File [/vendor/yoeunes/toastr/config/toastr.php] To [/config/toastr.php]
Publishing complete.

上述命令生成了一个新文件,config/toastr.php

<?php

return [
// some of the contents of this file
.....
    'options' => [
       ....
        'iconClasses'       => [
            'error'   => 'toast-error',
            'info'    => 'toast-info',
            'success' => 'toast-success',
            'warning' => 'toast-warning',
        ],
       ....
    ],
];

上述文件包含一些方法定义,我们将用这些方法来通知用户。这些方法包括错误、成功和警告信息。

为了使我们的通知能够很好地工作,我们需要添加jquery。这只有在views ,通过使用@jquery blade指令或通过内容交付网络(CDN)才能实现。

在这个应用中,我们将使用jquery指令,因为它们很容易在模板上添加。然而,你可以自由地使用jquery blade。

使用toastr通知的用户认证

之前,我们设置了我们的应用程序能够使用toastr包。

现在,让我们创建一个简单的用户认证系统,在注册时显示一个success message ,对返回的用户显示一个welcome alert

这个认证系统还应该在输入无效的凭证时显示错误提示。

让我们开始设置我们的User 模型,以适应我们的认证需求。

//app/Models/User.php
 protected $fillable = [
        'first_name',
        'last_name',
        'phone',
        'email',
        'password',
    ];

上面的模型列出了我们将用来验证用户的字段。你可以根据你的需要自由添加字段。

现在,更新user migrations 文件,如下图所示。

    ...
    Schema::create('users', function (Blueprint $table) {
    $table->string('first_name');
    $table->string('last_name');
    $table->string('email');
    $table->string('phone');
    });
    ...

上面的文件使用schema facade来创建我们的用户表列。

重要的是要记住,我们已经在User 模型中定义了这些字段。

现在我们的模型和迁移已经准备好了,继续用你的数据库凭证编辑你的.env 文件,如下图所示。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=toastr
DB_USERNAME=MyUserName
DB_PASSWORD=myPassword

下一步需要你迁移你的数据库。确保你已经更新了你的凭证,否则下一步会出现错误。

通过运行以下命令迁移你的数据库。

 php artisan migrate

让我们继续,创建一个authentications 控制器来处理用户注册和登录。

php artisan make:controller AuthenticationController

上面的命令在App/Controllers 目录下创建了一个新的控制器。在这个目录中,我们要定义我们的用户认证逻辑。

编辑App/Controllers/AuthenticationController.php 文件,如下所示。

....
public function registerUser(Request $request){
        $validator=Validator::make($request->all(),[
            'first_name' =>'required|string|min:2',
            'last_name'  =>'required|string|min:2',
            'email'     =>'email|unique:users|min:6',
            'phone'     =>'required|string|unique:users',
            'password'     =>'required',
        ]);
        if($validator->fails()){
            toastr()->error($validator->errors()->first());
            return back();
        }
        User::create([
            'first_name'    =>$request->input('first_name'),
            'last_name'    =>$request->input('last_name'),
            'email'    =>$request->input('email'),
            'phone'    =>$request->input('phone'),
            'password'    =>Hash::make($request->input('password')),
        ]);
        toastr()->success('You have successfully registered on our test application');
    }

在上面的脚本中,我们有一个registerUser(Request $request) 方法,以request 为参数。

这个方法然后验证用户的请求。例如,请求应该有所有的字段,并符合定义的正则表达式。

当上述验证失败时,我们使用toastr 包提醒用户。

如果验证测试通过,我们使用之前定义的User 模型将用户添加到数据库中。

注册成功后,我们会用一条确认信息通知用户。

值得注意的是,Toastr包有不同类型的警报。在我们的案例中,我们使用了背景颜色为绿色的success()

我们还使用了一个红色背景的error() 警报。其他函数包括warning() 方法,你可以用它来警告用户不要进行某些操作。

现在我们已经得到了一个功能性的用户注册,让我们继续前进,在routes/web.php 文件中创建我们的路由,如下图所示。

Route::post('auth/register',[\App\Http\Controllers\AuthenticationController::class,'registerUser'])->name('signup');

现在让我们通过在resources/view/auth.php 文件中添加视图来最终完成我们的应用程序。

<head>
    <title>Toastr.js</title>
    @toastr_css
</head>
<form method="POST" action="{{ route('signup') }}">
    @csrf
    <div class="form-group">
        <label for="first_name" class="col-md-4">{{ __('First Name') }}</label>

        <div class="col-md-6">
            <input id="first_name" name="first_name" type="text" class="form-control" required autofocus>
        </div>
    </div>

    <div class="form-group">
        <label for="last_name" class="col-md-4">{{ __('Last Name') }}</label>
        <div class="col-md-6">
            <input id="last_name" name="last_name" type="text" class="form-control" required autofocus>
        </div>
    </div>
    <div class="form-group">
        <label for="phone" class="col-md-4">{{ __('Phone Number') }}</label>
        <div class="col-md-6">
            <input id="phone" name="phone" type="tel" class="form-control" required autofocus>
        </div>
    </div>

    <div class="form-group">
        <label for="email" class="col-md-4">{{ __('Email') }}</label>
        <div class="col-md-6">
            <input id="email" name="email" type="email" class="form-control" required>
        </div>
    </div>

    <div class="form-group row">
        <label for="password" class="col-md-4">{{ __('Password') }}</label>
        <div class="col-md-6">
            <input id="password" type="password" class="form-control" name="password" required>
        </div>
    </div>

    <div class="form-group row mb-4">
        <div class="col-md-6 offset-md-4">
            <button type="submit" class="btn btn-primary">
                {{ __('Register') }}
            </button>
        </div>
    </div>
</form>
@jquery
@toastr_js
@toastr_render

上面的模板是一个简单的注册表格,包含了我们在User 模型中定义的所有字段。

你注意到,我们正在指示我们的刀片文件使用@toastr_css ,它为警报提供了样式。

在模板的末尾,我们还有其他三个指令,@jquery@toastr_js@toastr_render

现在,如果你还记得,我们曾经说过Toastr包是基于JavaScript的,因此我们使用Jquery来确保通知在浏览器上的呈现。

输出。

alert

结论

在本教程中,我们已经学会了如何使用toastr 包来向用户显示通知。

我们也看到了如何使用这个包来通知用户不同的警报,如警告、成功和错误信息。