【问题标题】:How to use SweetAlert messages for validation in Laravel 8如何在 Laravel 8 中使用 SweetAlert 消息进行验证
【发布时间】:2020-12-12 07:56:44
【问题描述】:

我正在使用 Laravel 开发我的项目,并且我想在用户未标记 Recaptcha 时返回 SweetAlert 错误消息。我在LoginController.php 中编码:

use App\Providers\SweetAlertServiceProvider;

protected function validateLogin(Request $request)
{
    $request->validate([
        $this->username() => 'required|string',
        'password' => 'required|string',
        'g-recaptcha-response' => ['required' , new Recaptcha]
    ],[
        'g-recaptcha-response.required' => alert()
        ->error('Bad','Attempt')->persistent('Ok')
    ]);
}

它不显示警报,而是返回以下消息。

类 UxWeb\SweetAlert\SweetAlertNotifier 的错误对象不能是 转成字符串

但是,我已经将此行添加到提供商部分的config/app.php

UxWeb\SweetAlert\SweetAlertServiceProvider::class

那么这里出了什么问题?我还应该做些什么来返回此警报消息?

【问题讨论】:

  • 您是否尝试过使用composer dump-autoload 清除自动加载缓存?
  • 是的,我已经这样做了,但没用
  • 朋友,你不能那样做,因为验证会返回文本,但你想使用的警报是返回文件会话!

标签: php laravel sweetalert laravel-8 laravel-validation


【解决方案1】:

您可以使用手动验证来返回字符串以外的内容:

$validator = Validator::make($request->all(), [
        'username' => 'required|unique:posts|max:255',
        'password' => 'required',
        'g-recaptcha-response' => ['required' , new Recaptcha]
    ]);

    if ($validator->fails()) {
        if($validator->errors()->has('g-recaptcha-response'))
            SweetAlert::error('please validate the captcha, thanks !')
        return redirect()
                    ->back()
                    ->withErrors($validator)
                    ->withInput();
    }

还要确保您已在代码中安装并包含 sweetalert:

安装:

composer require uxweb/sweet-alert

在您的控制器中:

use SweetAlert;

在您的刀片视图中:

<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 docs (1)
uxweb/sweet-alert repo (2)

【讨论】:

  • 现在我收到Class 'App\Http\Controllers\Auth\SweetAlert' not found 错误
  • @fojbiu 将use SweetAlert; 添加到您的控制器。
  • 您好,在尝试使用甜蜜警报之前尝试将其安装到您的应用根目录并在 cmd / 终端作曲家需要 SweetAlert 上运行
  • 我已经用 Composer 安装了 Sweet Alert 包,我在 app.blade.php 的头部添加了 &lt;script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"&gt;&lt;/script&gt; 并在本页的正文部分添加了 @yield('form')。然后我正确地将它包含在我的刀片上。在那之后,我做了你在回答时所说的。但仍然出现此错误:Class 'SweetAlert' not found :(((
  • @fojbiu 您是否将use SweetAlert; 添加到您的控制器中?必须添加它,否则您的控制器将无法找到该类。请仔细阅读用法:link 你也可以找到很多方法来实现你想做的事情
猜你喜欢
  • 1970-01-01
  • 2012-03-05
  • 2020-10-18
  • 2018-03-11
  • 2013-09-03
  • 2021-11-14
  • 2020-09-24
  • 2018-12-17
  • 2021-04-05
相关资源
最近更新 更多